Teaching Philosophy

There is a principle in software engineering management called “ego-less programming”, in which programmers are asked to focus on what works, without too much concern for who did what or how. I think I’ve been trying, when I step into a classroom, to achieve something like “ego-less teaching”.

I want to motivate my students, and to keep them interested in the material. Not only do I think the material we cover (fundamentals of computer design) is important and fascinating, but I am also trying to teach design skills that are essential for any engineer. To that end, I will do anything I can think of, without regard for the “dignity” of my position. I refuse to compromise on the content, and I can’t make the material any easier, but anything I can do to demystify it is fair, as far as I’m concerned.

I tell jokes, which sometimes fall flat. I tell horror stories about design errors, both from the legends of computing and from my own somewhat checkered past. I talk loudly at the good parts; wave my arms and walk madly to and fro with what some might consider undue enthusiasm for something like binary adder design. I encourage the students to participate as much as possible in lectures. I try to treat every lecture as a joint discovery process, and to find the value in every question or comment. I have even resorted to bribing my students with candy in exchange for speaking out in class—anything to get a dialogue started.

I’ll try anything. It doesn’t always work, but it’s very rewarding when it does.

Current Courses

  • SE 3310a - Operating Systems for Software Engineering
  • ECE 3375b - Microprocessors and Microcontrollers