Friday, October 2, 2009

Best Practices for Introductory Computer Science

The panel started with the bad stuff: There were 50% fewer computer science students in 2007 than there were in 2000, with numbers continuing to decline in 2007-2008. The attrition rate is 30-40% in computer science, so we lose a lot of students every year.

Then they moved in to the good stuff: ideas that have worked at their respective universities: Duke, RIT, Union College and the College of New Jersey. There were lots of very specific tips, but I've grouped them into three parts: collaboration, themeing, and hard problems.

Best Practices for Introductory Computer Science Panel



  • Duke has a peer led team learning program, where students can become peer leaders and teach each other.

  • RIT has a game software development introductory sequence, where they teach the first 3 levels of CS as motivated by game design programs.

  • Union college has 5 different theme-based intro courses (plus one for engineers), so rather than working on generic problems in first year, they are immediately working on bioinformatics, game design, etc.

  • The College of New Jersey has a traditional track to level 3, but also accelerated multimedia track. And their CS 3 course has them working on socially relevant, interdisciplinary problems.


There were a variety of themes that came up in all the presentations: collaboration was a big one. Getting students to interact, work together, even teach each other seems to make a huge difference in their ability to learn and succeed. This was done in a variety of ways, from required group projects, teaching, wikis, to more subtle things like requiring use of tools the students may not have seen, so they are forced to learn together, or by teaching games, which tend to be very social. Students still sometimes have to be told "it's ok to talk to each other" but when they do learn to do that, they benefit.

Another theme was, well, themes. Students seemed to respond well to real-world problems, and themes can be used to inspire all assignments, examples, and lessons. Interest in the problems provides motivation for students to overcome the "hard" parts. And "getting it" is a lot more exciting when you're solving a problem that matters -- whether it's making your game work, or writing code that will be used by another department to solve a problem.

And finally, it's clear that in order to get more students to succeed, you don't need to dumb it down. Students are capable of doing very complex things when properly motivated and supported (both by the school and by their peers). In fact, they may be more motivated by hard problems than they would have been by simplified ones, since the hard problems are relevant to real problems. I really loved this part of the discussion, since I myself left computer science (I got a math degree first) because it was too easy and pointless. And I've noticed time and time again, now that I teach first year students, that they're way more capable than outsiders might expect.

I think the panelists summed up their key message well: "Set students up for success -- not failure."

This post can also be found on my personal blog

No comments: