“We’ve got to teach kids to program, but not as a subject in isolation.”
Mike Goldweber sent me a link to this video at BBC News – Newsnight – Is lack of computer science teaching failing pupils?. I’m a bit worried about the overall theme of this story, that it’s important to teach UK kids programming in order to save the British gaming industry. (Are there that many jobs available in gaming? So much that we should teach every kid in school to program?) But the quote right at the beginning, around 44 seconds in, is a thought that I’ve been mulling a good bit recently.
We’ve got to teach kids to program, but not as a subject in isolation.
That sentiment is in keeping with Seymour Papert’s original vision for Logo in schools. In his book “The Children’s Machine,” Seymour critiqued the process of “schooling” that took Logo out of its natural home as a tool for exploration and expression in mathematics and science class, and instead “schoolified” it. Logo was shoved into the lab (far away from the interest of teachers), and made into a separate subject to be taught, after the pre-requisite “Keyboarding Skills” course. Seymour saw programming as going beyond “the 3 R’s,” in an amazingly prescient Wired piece from 1993, where one can see the seeds of the Open Learning effort and individualized learning support through technology.
This issue of teaching programming in the context of other courses helps to address some of the concerns voiced in the recent discussion about computer science as a liberal art. It’s a point I hear often from high school teacher advocates. ”The curriculum is too full. If we put CS in, what comes out?” Seymour was saying that that’s the wrong way to think about it, and I’m starting to think he was right on this count (among many others–some of his insights take me longer to grok). It’s not about doing something more. It’s about teaching what we have now, but in a new and more powerful way. It’s Andy diSessa’s argument for computing literacy — how much powerful are we when we are as literate with computing as we are with numbers or text?
Set aside the issue of programming being a weird (and arguably, badly designed for the general purpose of insight and expression) notation, and even set aside the technology issue. Imagine that we had a new form of writing, that wasn’t that much different than English (e.g., it’s not Esperanto), but was significantly more powerful (e.g., more accurate, more understandable, more usable for mapping to theory, more practical for solving problems) for expressing science and mathematics. And what’s more, once you used that language, you could easily visualize and simulate what you described. Wouldn’t that be worth teaching to every science and mathematics student, at least at the undergraduate level? Certainly, we would want that for every graduate student. Why is it not worth teaching, just because it’s a notation that runs on a computer?
I have advocated for some years now “Computing for Everyone,” that Alan Perlis had it right when he argued in 1961 that everyone on campus should learn to program. Perlis advocated a required course for everyone, and so have I. Maybe that’s the wrong end-goal. I understand the argument from CSTA, that it’s hard enough to teach enough CS teachers in high schools — how in the world can we teach every mathematics and science teacher how to use and teach programming? I totally get that we don’t know how to get there. But that doesn’t make it the wrong desired goal. (I’m reading in the middle of Abelard to Apple now, so I might be particularly receptive to learning-with0ut-courses these days.)
How do we get there, where students have true computing literacy and programming is part of science and mathematics? Are required courses in computing part of the trajectory to the desired state? Or is there a different path to integrating computing into the rest of the curriculum?