I've blogged before about the decrease in Computer Science enrollment. One of the side effects of decreased enrollment is decreased class size. In fact, I've got a class coming up next quarter -- an algorithms/data structures class -- that will almost certainly have fewer than 10 students in it. This raises the question: how would you teach such a class differently, given that the number of students is small enough that there is no need for a formal lecture approach?
I'm still in the early stages of thinking about this, but this is what I've got so far:
- Our classes meet twice a week for 2 hours each time. Have a seminar for one of those periods, focusing on the topic du jour: balanced trees, hash tables, etc. Make a student responsible for presenting his or her best understanding of the topic, leading a discussion for whatever points are unclear or not covered in sufficient depth. Do "mini lectures" for especially unclear matters.
- Instead of having programming assignments targetted at each topic, have one or two larger projects. Do them as a group. If enrollment is small enough, we can just have one group; I could be a member of that group, too. It's a fairly easy substitution, for example, to substitute a search tree or hash table for a database in a web application.