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:

  • Good Open Source Projects for Programming/Refactoring Assignments May 21, 2015 So CSSE375 is a Rose-Hulman course focused on refactoring (course notes here). As a result, I like to have the students make changes to existing open source projects. This gives them a little experience with codebases of a realistic size, and it makes the assignments feel a little more authentic. I generally like Java ...
  • Programming Assignments for Programming Language Paradigms May 20, 2015 This winter I taught a course called Programming Language Paradigms. This is a language-oriented course where students learn several interesting programming languages and discuss the various features of these languages. The goal is to learn the various paradigms of programming through actually using the languages to solve the kinds of problems that they ...
  • 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 ...

Want more? View all teaching posts