Yesterday, I got pointed to this recent video of a TEDx talk by Mitch Resnick, who runs the Lifelong Kindergarten program at the MIT Media Lab, where he’s built a number of environments used to teach young children about programming:
A couple of points on this —
I’ve written here several times before on the value of teaching programming as a liberal art. Much of my thinking on this topic has come from a book that Resnick wrote for the MIT Press in the 90s. “Turtles, Termites and Traffic Jams” talks about two things:
- Using massively parallel application of small, simple programs to demonstrate self-organizing and otherwise complex systems.
- The StarLogo language that he developed to teach grade school children how to apply these concepts. The original version of this software was hosted on the Media Lab’s Connection Machine, but it was later ported to the Mac. (When I first read the book, I remember being jealous that little kids had access to a machine like that. You can probably buy a used one cheaply now, and the story of the company that made them is an interesting read.)
In the first few years of her career, my wife taught the original (non-parallel) version of the Logo language in her 3rd grade classroom, and I had gone in to her classroom a few times to help out. At the time, her efforts were frustrated by the lack of training she actually had been given (no one had ever shown her how to define functions, for example), the amount of time in a week that could be devoted to it, and the fact that her entire class had to share a single Apple ][. The textual nature of the language also made things more difficult for her students (I’ve been coding for a living for over 20 years and I still waste time because of typos; imagine an 8 year old doing hunt-and-peck with two fingers).
In the video above, Resnick shows examples created with the Scratch software that his group has developed at MIT, and that has come into fairly widespread use in schools. It gets around the problem of “coding means typing stuff into an editor” and presents useful constraints to make success more likely. Both of my kids spent time playing with Scratch when they were younger, and the fact that it felt like ‘playing’ instead of learning something boring kept them at it longer than they would have otherwise.
As Resnick points out in the video, even if only a small percentage of the kids who learn programming ever become professional developers, the skills that they’ll acquire are directly applicable skills in normal adult life. Even of they don’t become professional developers, they may end up needing to write code anyway as part of a job (go hang out on Stack Overflow sometime and see all of the biologists who are needing to learn how to program to analyze gene sequences. There’s a major push in the world of library sciences to get librarians programming.)
It was never a good idea for programmers to be some sort of elite priesthood, but I understand why things started out that way. I’ve read somewhere (probably an Alan Kay quote that I’m too lazy to track down at the moment) that you’re not fully literate in a medium unless you can both consume and produce in that medium. By presenting a tool with a low barrier to entry and high rate of success, Scratch and its progeny can open the doors to fuller computer literacy starting at a very young age.