Why teach children programming?

There is a long pedigree to the idea that writing a computer program provides a broad canvas on which the learner can sketch half-understood ideas, and assemble on the screen a semi-concrete image of the structures he or she is building intellectually. Early research produced some robust indications that the expression of mathematical ideas in the form of computer programs suggested a promising line of enquiry.

Programming is unfashionable these days. The conventional idea of a programming language is a difficult and text-based system for writing programs: lines of text are entered, output is (hopefully) obtained. Compared with the visually attractive screens of multimedia systems, or even the direct manipulation interfaces characteristic of the dynamic geometry tools, programming can seem dull, arcane and unnecessarily complex. Yet recent developments in the nature of programming have changed even this situation, perhaps not fundamentally, but at least enough to challenge the most obvious cultural stereotypes of the programming idea. On one level, that's what the Playground project is about.

Programming in its widest sense might be thought of as a tool for expressing and articulating ideas. Ivan Illich called such tools, convivial:

To the degree that he masters his tools, he can invest the world with his meaning; to the degree that he is mastered by his tools, the shape of the tool determines his own self-image. Convivial tools are those which give each person who uses them the greatest opportunity to enrich the environment with the fruits of his or her vision.

The extent to which a tool may be seen as convivial is the extent to which the use of the tool creates meanings for its user, catalyses intellectual experience and growth. We do not claim that the computer is convivial, any more than Illich claims that a tool is or is not convivial. On the contrary, it is not difficult to think of examples of computers in learning situations which are anything but convivial. This is where programming comes in. Illich says:

Tools foster conviviality to the extent to which they can be used, by anybody, as often or as seldom as desired, for the accomplishment of a purpose chosen by the user. …They allow the user to express his meaning in action.

But action by itself, is not enough. For example, computer games are full of action - action programmed by someone else! What, if any, are the new possibilities computer games offer for learning? After all, most games typically cast children in the role of game-player, playing according to rules programmed by someone else - a situation which, however motivating, sets strong boundaries around what might be learned.

Yet a central core of the computer game idea contains an entirely untapped potential to support deep learning, by allowing learners to play with the rules as well as simply play by the rules. In other words, to experience the excitement and joy of creating something new, of building on their (and each others') ideas, of trying and testing - to program.