After an unintentional hiatus, last week I resumed following Georgia Tech CS colleague Mark Guzdial’s Amazon blog. His latest salvo is a thought-provoking piece called Using computing to teach computing (Hint: Don’t use the “P” word). The post centers around a question Mark posed to Jeannette Wing, Director of the Computing & Information Science & Engineering branch of the NSF (aka NSF CISE): “How can you get to computational thinking for everyone if we don’t teach programming?”
Wing argues that computational thinking shouldn’t start with programming. She pointed to an example of a better method, one I hadn’t seen before: CS Unplugged. Here’s an explanation from the website:
Computer Science Unplugged is a series of learning activities that reveals a little-known secret: computer science isn’t really about computers at all!
Unplugged teaches principles of computer science such as binary numbers, algorithms and data compression through games and puzzles that use cards, string, crayons and lots of running around.
I find the idea both fascinating and absurd. On the one hand, I agree that the general skills in procedural literacy sit at a higher level than their particular instantiation in computing. Understanding systems and complexity is a valuable skill that transcends disciplines.
But Wing and CS Unplugged are not championing procedural literacy; they’re advocating a different way of teaching computational literacy, one that doesn’t involve computers. Concerns well up in me.
So I began searching for a reductio ad absurdum to express this concern. Here’s what I came up with, riffing CS Unplugged:
Literature Unbound is a series of learning activities that reveals a little-known secret: literature isn’t really about books at all! Unbound teaches principles of literature such as genre, setting, and characterization through games and puzzles that use cards, string, crayons and lots of running around.
Why not? Things like improv and recitation might be viable ways of introducing literature to the logophobic. After all, theater, performance, poetry, and literature have a long and intertwined history stretching back millennia, just as computing, mathematics, and philosophy do (well, stretching back decades anyway). Shhh, don’t mention The R Word!
But such an approach also misses a vital point: literature is fundamentally about written language, just as computing is fundamentally about analog and digital computation. There’s no way to excise the one from the other. Sure, the concepts of logic and algorithm exist without computers, just as the concepts of exposition, theme, and meter can exist without writing. But those ideas only become computation or writing (or…) when they are inscribed in the native form of their respective media.
During their conversation, Wing launched this provocation at Mark: “You wouldn’t start a 4 year-old with programming, would you?” It seems like a good point, on first blush. What 4 year-old could pick up C or LISP or even Python and start cranking out functional, meaningful programs?
But consider the example of literature again. Who would say something as silly as this: “You wouldn’t start a 4 year-old with reading, would you?” Ok, we certainly wouldn’t expect a 4 year-old to burn through The Brothers Karamazov. But we would read to her, from books with simplified themes and forms.
The same goes for writing; no 4 year-old would write a novel. But we might expect a 4 year-old to start the process of writing, even if that just means scrawling words in crayon on paper.
An important and overlooked property of both early reading and writing is also an incredibly obvious one: when young kids read and write, they do so for real. That is to say, when they read, they read actual books, even if those books are highly simplified. When they write, they write actual language on actual paper, even if that language is highly simplified, and even if that paper amounts to a single sheet.
And yet, we still have far too few examples of computer programs meant for use by kids. Sure, tools for helping children make stuff with computers go back decades, including the pioneering work of Seymour Papert, Alan Kay, and others. Indeed, we might argue that environments like Logo and Smalltalk and even Processing offer particularly good analogues to crayon and paper, because they scaffold real programming practices rather than substituting fake ones.
But just as importantly, we don’t have many examples of good computer programs for kids. I know that will sound implausible; aren’t there decades of great educational software meant especially for kids? Sure. But what about expressive software? Where is the computational equivalent of kids storybooks or chapterbooks? Where are the computer programs that capture the imaginations of the young as computer programs rather than as pedagogy?
Videogames offer one kind of example, not only because they are appealing to many kids but also because they are computationally native, not just computational versions of stories or music or whatnot. So does Lego Mindstorms, to some extent, but it’s such a specialized platform, so removed from the real use of computers. Other examples might include small-scale programs like iPhone interactive visual art apps Pixi and Spawn.
Promising signals, to be sure. But let’s not kid ourselves. If you want a real wake-up call about how far behind we are, take a look at the children’s section of any bookstore. How stupid would it be to try to teach literacy without the books?