When it comes to computer programming for everybody (CP4E), there are two possible interpretations. Is it computer programming made accessible to everybody, including non-programmers, or is it an an initiative to make everyone to some extent a programmer? A recent discussion of Alice on the educational special interest group (edu-sig) got me thinking about these two interpretations.
The Stage 3 research group at Carnegie Mellon University built Alice, a 3D interactive programming environment. Using Alice's GUI tools and some simple Python scripting to move images around a screen, you can create a 3D story. At IPC8, Alice developer Randy Pausch described it as "3D Logo on steroids." Logo is a project most commonly associated with using scripting to move a turtle around a screen. To be fair, the Logo Foundation sees Logo as more than moving turtles. They think of it as an educational philosophy first, and as a family of programming languages second.
Alice is neither a educational philosophy, nor a particular programming language. I wouldn't even call it science. You could think of it more as a study. Could they take complex 3D tools and put them in the hands of college undergraduates with no programming experience, thus breaking the barrier between artists and 3D programming tools? They chose Python as a basic scripting language, and then went about creating a simple application programming interface (API) that non-programmers would understand. They introduced basic programming concepts, but didn't require or even expect the learners to become programmers. They succeeded in creating a tool that your average 10-year-old could learn and use. They also felt they learned a few things in the process. Matt Conway, a former member of the Alice project, sums up some of their discoveries in his dissertation, Alice: Easy to Learn 3D Scripting for Novices.
The Alice project explored the question, "How do you make programming available to non-programmers." This is the first interpretation of computer programming for everybody I gave above. Following this vision, all computer tools might someday provide programming interfaces designed for non-programmers.
The alternative approach to CP4E I gave is, "How do we teach everyone to program?" These two questions generate different answers which are sometimes at cross purposes. To make programming accessible to non-programmers you have to hide detail. To open people to learning programming, you want to expose detail, or at least make it possible for them to pop the hood and take a closer look inside. This is more the approach Art Siegel takes with PyGeo, an interactive 3D geometry tool. He doesn't hide the math or the programming, he gives the math expression. Similarly, Kirby Urner's curriculum material does not dumb down the programming. He uses it straight up to explore numerical literacy.
The answer to the first question need not be educational. There is nothing inherently educational about Alice. The second question, "How do we teach everybody to program," is essentially educational. I think the two approaches to CP4E have led to many divergent interests on the edu-sig group. It has led to arguments as well. Both on and off the list there has been debate over whether to move to even simpler languages than Python, whether it is better to work on the programming tools or the programming curriculum, whether Alice represents a dumbing down of programming that is counterproductive to people learning programming in the long run, and whether teaching everybody to be a programmer is pretentious in the first place.
Though they may provide different answers and sometimes lead to debate, the two approaches to CP4E can also support each other. Simpler tools can play a role in education similar to the role that simpler books have in learning to read. Learners are not expected to stay with the simple; they are encouraged to tackle more difficult material. Coupled with the same kind of expectation of growth and encouragement early readers receive, projects like Alice make interesting entry points into learning programming. Useful programming tools for non-programmers can be like first readers while whetting the student's appetite to learn more.
Stephen Figgins administrates Linux servers for Sunflower Broadband, a cable company.
Read more Python News columns.
Discuss this article in the O'Reilly Network Python Forum.
Return to the Python DevCenter.
Copyright © 2009 O'Reilly Media, Inc.