Teaching

I really love teaching CS! It’s fun to be the first one to introduce all the awesome parts of the field to students, and it’s extremely rewarding to see students enjoying coding, design, theory, or whatever.

Teaching CS is also a serious business, and I am always looking for ways to improve my pedagogy. My approach is usually a lecture plus interspersed active class exercises to practice skills and reinforce difficult points. For a summary of my teaching philosophy, feel free to check out my teaching statement (though it is a bit dry).

I generally solicit student feedback (both in terms of how well the liked the lesson and objective measures of understanding). You can see my thoughts on some of my recent teaching here:

  • My students are awesome: CSSE 376 Board Games May 20, 2013 So in my quality assurance course, I ask my students to form groups of 2-3 and build computerized versions of board games. I selected board games in particular because I knew board game logic was both understandable AND tricky enough that it could generally benefit from robust unit testing (which was what I was ...
  • Reflection on Summer 2012 GHP Classes December 10, 2012 I’m a big believer in student feedback. Even though students often can’t articulate the source of problems, going through and reflecting is an essential part of figuring out what I want to try going forward. So even in an environment like GHP where I’m not asked to formally collect evaluations, I always do. ...
  • Making Simple Fractals in R October 9, 2012 In my GHP Fractals class this summer, I opted to write my sample programs in R. I selected R because it has very nice graphing libraries and built-in complex numbers. Overall, I was pleased with R; it definitely let me built some incredibly straightforward fractal code. It’s not as fast or pretty ...
  • Feedback from my First Semester Teaching May 11, 2012 So Duke Spring 2012 is finished, and grades are in; it’s time for me to become an ordinary graduate student again. But before I do that, I think it’s reasonable to reflect just a bit on how the semester went. All and all, I am happy but not ecstatic with how my first semester turned ...
  • My students are awesome (part 2): cs100 December 20, 2011 CS100 is a your basic CS2 course, providing an introduction to data structures, big O, and of course plenty of practice coding tricky problems. This course is a great favorite of mine to teach, mostly because of the office hours. It’s just fun to work with students who are just starting to get ...
  • My students are awesome (part 1): CS149s December 14, 2011 So one of the coolest traditions at in Duke is CS149s. Officially, it’s called the problem solving seminar. Unofficially, it’s weekly preparation for ACM ICPC competition. Students work hard in this course: every week they work on a problem set consisting of old ICPC competitions or TopCoder. It’s no small part ...
  • CS100 Class Design November 29, 2011 So I haven’t had much opportunity to post about my classes at Duke, but it has been very cool. I’ve found students at Duke to be very conscientious and smart, and my office hours have been very busy which is always fun. Of course there’s still plenty of the usual student foibles to ...
  • GHP Theory of Computation Class Summary July 31, 2011 The second class I taught at GHP was Theory of Computation (entitled “Does Not Compute”). We approached the problem of machine equivalence. This class was a lot of fun and students seemed to enjoy it. You can see my feedback, if you’re curious. Day 1: I began with the motivating question of the ...
  • GHP Fractals Class Summary July 25, 2011 Ok, so my good intentions to blog weekly about my teaching at GHP didn’t quite happen. It really is amazing exactly how intense teaching at GHP is, at least for your first year. Between majors, minors, all the various side projects, helping students after hours, and then prepping classes you are basically working ...
  • Guest Lecture: Media Computation Data Structures April 9, 2011 Mark recently asked me to teach a guest lecture in his Media Computation data structures class. The lecture was an introduction to the Simulation engine Greenfoot. The goal was to introduce the idea of simulation, toss out a few key bits of terminology to prep students for later classes, and get students playing ...

Want more? View all teaching posts