This seems to be an endless debate: why should we teach programming? (Or coding, if that’s what you prefer to call it.) We have to split the question into at least three versions, and probably more:
- Why should we offer electives like high-school programming courses, college CS majors, etc.?
- Why should we include programming as a required part of math (or other) required courses?
- Why should programming be a stand-alone required one-semester (or one-year, or whatever) course in a high-school (or middle-school) curriculum?
Mark Guzdial’s excellent piece in his Computing Education Blog offers some answers, mostly to version #2, but possibly to #3. Version #1 seems non-controversial, so there’s not much to discuss there. The other two versions come down to the broader question of whether students in secondary education need to be exposed to the discipline of writing computer programs. Guzdial’s bottom line is that it amounts to a social justice issue: if programming is optional, then non-traditional CS students (in terms of socio-economic class, gender, race, etc.) will be less like to exercise that option. That sounds right to me, but the specific rationales along the way are even more interesting. First he rejects the standard idea that programming teaches you how to think:
“Computer science builds the mental discipline for breaking down problems, and solving them.” There are few studies that test this claim as “computer science,” but there have been lots of studies looking for transfer from teaching programming to general problem-solving skills. Probably the first study investigating this claim is Roy Pea and Midian Kurland’s paper On the cognitive effects of learning computer programming. You can find this claim in a paper by Henry Walker to which I responded in this blog. You can see it in posts all over the Internet, from this blog post to this article from a teacher in England. There is a strong belief out there that learning computer science, and programming called out specifically, leads to new problem-solving and “a new way to think.”
There is simply not evidence in support of these claims. I talk about these in my book, I reference the Palumbo meta-review in this blog post, and NYTimes wrote about it this last spring. Like “learning styles” and “Latin teaches thinking,” this is a persistent myth that learning computing leads to problem-solving skills, and we have no support the claim.
Maybe there’s no such evidence. Maybe we can observe that absence of evidence isn’t evidence of absence, but that doesn’t help. What does help is the list of more specific claims that Guzdial makes. Read the article for the detailed explanation of each of his answers to “Why teach programming?”, as each capsule answer is much too brief:
- To understand our world.
- To study and understand processes.
- To be able to ask questions about the influences on their lives.
- To use an important new form of literacy.
- To have a new way to learn science and mathematics.
- As a job skill.
- To use computers better.
- As a medium in which to learn problem-solving.
Guzdial is not convinced about numbers 6 and 7 (even though it’s his own list), but it’s still a good list of possible answers.