Programming: Why Not?
One of the common explanations for the falling enrollment in CS, among women in particular, is "programming." The frequently repeated story is that students think that computer science is only about programming, and they don't like programming, so they don't enroll in computer science. I've had a couple of experiences over the last few months that demonstrated to me just how much students dislike programming, at a deeper level than I had expected.
The first story is from this last summer. I taught on Georgia Tech's Study Abroad program at Oxford University. My colleague Richard Catrambone and I taught a course in Computational Freakonomics. The text for the course was the best-selling book Freakonomics by Steven Levitt and Stephen Dubner, which uses economic methods to analyze social science questions like: If drug dealers make so much money, why do so many of them live with their mothers?
In our class, we reviewed and critiqued each chapter of the text. Then, Richard taught some of the social science methods used in the book (such as correlation, ANOVA, t-tests, and multiple regression), and I taught computational techniques for implementing those techniques with live datasets drawn from the Internet. Students then used these techniques to ask and answer their own questions of interest on these live datasets.
On the first day of the course, I handed out a set of course notes that I had written which included example Python programs for doing a variety of analyses. Panic swept over the students. One raised her hand.
"We're going to be programming in this class?"
I explained that yes, we would be programming, but it wasn't going to be difficult. (I did wonder what the students might have thought "computational" meant.) I heard later from the program director that several students went to see her about dropping out of the course because of the programming component. Because it was a study abroad course, students couldn't drop.
At the end of the course, I asked the students what they thought of the course on an anonymous survey. The feedback was strongly positive. Some of the responses were:
- "I was one of those people who was "concerned" about the programming aspect of the class. Although I have only programmed [a little in the past], I was able to pick up the Python programming rather quickly. The homeworks gave us just enough practice to learn the language."
- "I thought the programming was really easy and that we honestly could have attempted to do things that were harder/more complex. Python seems to be a decent programming language. I think the programming was useful because although Excel can do a lot of things, in some ways Python is better - and by emphasizing the actual process of coding I could then program something in MATLAB or whatever language I have at my disposal if I were to attempt these types of things in other classes/work."
- "The programming was by no means overwhelming. I thought it was quite easy and fun. Very appropriate for the setting."
The second story is from the last month at the start of our Fall semester. Mike Schatz in the Georgia Tech Physics department has decided to trial a new kind of introductory physics approach, developed by Bruce Sherwood and Ruth Chabay of North Carolina State University. The new approach makes physics more concrete by using computation for modeling, simulations, and problem-solving.
Students can make, for example, 3D graphical objects attached to springs, then measure the behavior. Bruce and Ruth recommend VPython, which is what Mike is using. Mike and I have been communicating about how we can work together, between CS and physics, to draw connections between our classes.
Mike is running a trial section of 140 students. The day that he introduced the programming aspect, a dozen students applied to drop the course. Note that: nearly 10 percent of the enrollment. They had to talk to Mike to drop because of the trial nature of the section, and the common reason was that they didn't want to do any programming in physics.
Now, I can understand the students who wanted to drop Computational Freakonomics. Students have different expectations of a study abroad course than they do of an on-campus course, and programming clearly wasn't part of those expectations. But Introductory Physics is a required course for nearly everyone at Georgia Tech. If the trial goes well, they will use this approach for all sections of physics at Georgia Tech. Students dislike programming so much that they are dropping a required course – I guess in the hope that the trial goes badly and that there's some future chance of taking physics without a programming component.
Where does this dislike of programming come from? This isn't about not liking programming as a job choice. This isn't about avoiding facing a cubicle engaged in long, asocial hours hacking. This is about using programming as a useful tool in a non-CS course. It's unlikely that most of the students in the Physics class have even had any programming, and yet they're willing to drop a required course to avoid it.
This fear of programming may have greater economic impacts than even the decline in enrollment of computer scientists. There is a growing community of non-CS professionals who do program. Some estimates claim that there are four times as many non-CS-trained programmers than there are professional developers.
We just presented a paper at the ACM SIGCSE International Computing Education Research Workshop listing some of the reasons why graphics professionals start programming: to make complex activities more manageable, to save time, to create custom image effects. In other words, they program, without a CS degree, in order to make their jobs easier and to improve their productivity.
How many more people might try some end-user programming, if they weren't so frightened off by it? How much productivity are we losing in our economy because of the dislike of programming?
The challenge of increasing enrollment in computer science and broadening participation has many facets. One of those that has been identified in the past is students' dislike of programming. Until the last few months, I wouldn't have guessed just how deep that dislike is.
Mark Guzdial is an Associate Professor at the Georgia Tech College of Computing, and a member of NCWIT's K-12 Alliance.