This is not new to anyone currently involved in teaching computer science or maybe to anyone paying attention to education more generally. We’re struggling to increase Computer Science exposure in K-12. We’re struggling to make CS count or to make CS more compelling, especially to young women. Mark Guzdial recently cited this US News article that breaks down all AP test takers by gender. By far the worst ratio is in CS, where boys outnumber girls almost 5 to 1. Why is that?
Of course, there are lots of reasons, many of them complex and difficult to solve, many involving gender stereotypes and bias. Something I’m struggling with, though, is the CS learning curve. A lot of the resources available online get through the basics fairly quickly, something I do in the first semester or so: functions, variables, loops, strings, maybe arrays/lists. And it seems relatively easy at first. Assign a value to a variable, add something to it, see how it changes. But then it gets harder. Suddenly you’re not just doing a simple for loop to print “Hello World” five times, but you’re looping through a list of data, checking its validity and updating it. Still a basic concept in some ways, but now much more challenging.
I’ve seen this happen in my US classes and my MS classes. Students will breeze through the first parts and then stumble, and then they sometimes give up. While you can do some pretty cool stuff at the beginning. To do the really cool stuff requires some much harder things. Nested loops, nested if’s, functions calling other functions, objects. These are all things that allow say, a cool video game, which students love to create. But . . . it’s sometimes hard to get them past the hard stuff to get to the good stuff.
I’m not saying this is why girls in particular don’t do CS. That’s a whole other issue. But this is part of it for many kids. The latest hype about coding is that “everyone should do it.” I agree, but the hype suggests you’ll be making Angry Birds in a week. And that’s just not going to happen for most people. So a kid shows up to an Intro class expecting to be making Angry Birds like things and instead (if they’re unlucky like I was), they’re calculating the first 1000 prime numbers. Now there are some ways to make those first few assignments more fun. I’ve done robots and graphics, for example. And you can build on those to more complex things. But things can still get hard and can still get discouraging. So, we might need to find a way to not just have cool assignments at the beginning (the hook), but to have reasons and support to keep going past the hard stuff to get to the really cool stuff. I think it’s part of why we don’t have so many students taking CS or demanding CS in schools. They find out it’s harder than they thought and leave. I don’t know exactly how to fix that, but I keep thinking about it. Maybe someone else out there has an answer.