Programming without math, part 4

There is indeed a highly innovative project to introduce children to programming. It’s called the Scratch project (http://scratch.mit.edu), and it was started at MIT by professor Mitch Resnick and his students six years ago. By now there are several hundred thousand kids around the world who play with it. You can go to the site and download it for yourself, or you can just look at the following snippet of a screenshot to get the idea:



The general idea is that you drag virtual tiles from the left side of the screen, and they snap together to build a computer program. This whole “drag and snap together” idea gets rid of the problem of syntax errors — tiles will only snap together in ways that form a syntactically correct result.

The Scratch system provides a library of building blocks that allow kids to incorporate drawings (which they can move and flip through to create animations), recorded sounds, and detect user events from the mouse and keyboard. This is enough to form a kind of kid-friendly equivalent to authoring in Flash — kids can (and do) create animations, games, interactive stories.

This is a great project. But I would argue that there are two important problems it does not solve:

(1) It’s a single integrated project, not a general way of working. You can only build things in the Scratch environment. You can’t use it in your own web authoring tool, word processor, spreadsheet, music composing program, or anywhere else that’s outside of the Scratch sandbox.

(2) There is no way to fully connect the “kid’s toy” environment of Scratch to the sorts of serious computer progamming that these kids will later encounter in their freshman year of college — a good eight or nine years later. As kids go through middle school and on to high school, their experience with Scratch does not continue to stay relevant to their evolving interests.

(3) It’s still very math-centric. Philosophically, starting kids off with Scratch is a bit like teaching English by looking at electrical engineering technical manuals. Scratch is a version of an E.E. technical manual for ten to twelve year olds — it assumes you will eventually be using programming to do mathematical things.

I think the Scratch project is wonderful. I also think we might be able to do better, in two ways:

(1) Rather than create a single monolithic program, create a flexible way of putting these sorts of tile blocks into any computer program, so that a user can assemble programming tiles anywhere.

(2) Create a “core” language that does not require the use of math. Ideally we’d want to make this language powerful enough so that it could handle many different types of problems.

Tomorrow I will describe such a language, and various ways it can be used.

Leave a Reply

Your email address will not be published. Required fields are marked *