Tuesday, April 26, 2011

Designing CS101: From Failure to Causes

So far, I've argued that the goal for a CS principles course that makes the most sense is to deal with the failure "students who don't know what CS is about miss out on a chance to find a career they'll really enjoy in software development or computer science."

The next question then is "Why do they make this mistake?" There's a lot of data on this, particularly for females and minorities, e.g., to pick one pretty much at random, this survey-based study. In this study as in many others, the usual reasons given for not pursuing computer science is that it's too hard and computers are boring. Other studies and articles have focused on beliefs that computer science is all about programming and that that is a solitary activity. Yet others have focused on the presence of role models, again particularly for females and minorities, and the image (or lack thereof) of computer science in the popular media.

I have my doubts about that last one. Female hackers have been a staple on 24, NCIS, Warehouse 13, and elsewhere for some time. These reinforce the nerdy image but are otherwise very positive and emphasize membership in a working group over being a loner.

What about the perception that CS is about programming and programming is boring. Are those beliefs wrong?

One approach has been to make programming more fun. Alice. Scratch. Computing and Multimedia. I love these but so far I've not seen them move past the introductory level and hit the place where most agree real CS begins: algorithms and data structures. This also doesn't address the issue of what you do in CS.

Another approach is to skip the programming and go straight to the big ideas. That's what started this series of blog entries. But if the goal is to show that CS is an interesting career, then it' s not the ideas students need to see. That's like thinking a biology course introduces you to what biologists do. Students need to see and try doing things that accurately reflect what computer scientists actually do. What fills their days? What makes them want to come to work? What's a moment of joy?

So, my conclusion is that students misunderstand what people do in CS, besides programming, because they've never seen it done nor had a chance to try doing it, particularly pre-college. In this, CS isn't really different than math or biology or many other fields. Most education is badly constructed around facts and ideas rather than skills and activities. If there was a glut of computer scientists, this wouldn't matter, but as far as most U.S. companies and the government are concerned, we have a growing shortage.

On to question 3!