Changing the Way We Teach Computer Science

When two different and completely independent articles pop into my inbox at about the same time that are this closely related I interpret that as a sign to write a blog post. No, really I do.

The first thing I found was an article about Owen Astrachan, a professor of the practice of computer science at Duke University, being awarded an NSF grant to redesign the way computer science courses are taught. The second was a set of notes posted by Liz Lawley about a session at this week’s Microsoft Research Faculty Summit on the same general theme.

As the NSF has stated in their award to Prof. Astrachan “Unfortunately, despite the deep and pervasive impact of computing and the creative efforts of individuals in a small number of institutions, undergraduate computing education today often looks much as it did several decades ago.” I’ve been saying for a while that we need to seriously re-work the way we teach computer science. I’m pretty sure I’m not smart enough to figure it out but Owen Astrachan is one of the best and smartest teachers of computer science around. So I am hopeful that he’ll come up with some great stuff. I like this idea of problem based learning that the article talks about.

Liz writes about using social relevance in CS education. Actually she writes about a bunch of ideas (too many for me to summarize here and her notes are well worth reading in total) for changing the way we teach computer science, especially the first few courses. I like the idea that different people are taking different approaches. We need a variety of ways to teach if we are going to attract a more diverse group of people into the field.

I wish I’d been able to make it to the Faculty Summit this year but since I can’t be there I am really glad that Liz is blogging about it.

So how would you change the way we teach computer science? Or is the old way that you learned under good enough? Are there people/schools out there that you think are really doing it right?