Click the image to see the slide show
Do you want to teach kids how to program or do you want them to learn how to build graphically rich dynamic applications, simulations, games and animations?
If you chose the first option, then Scratch, from the Lifelong Kindergarten Group at the MIT Media Lab may not be your choice as a learning tool, as there is no coding required. But if you chose the second, then there is no better tool for teaching kids 8 and up how to build rich Internet applications.
Though, come to think of it, Scratch, which runs on both Windows and Macs, actually can teach people a thing or two about traditional code-based application programming as well.
I recently tried out Scratch and was impressed with its implementation. A typical Scratch project is split into three windows, which basically break down into tools, actions and the stage. To start a typical project one adds sprites to the stage. Sprites can be anything, from objects to animated characters to objects that can be manipulated. Along with the standard set of sprites that are included with Scratch, developers (I mean kids) can also import any image into Scratch or create their own using a Paint-like editor.
Defining actions for sprites in Scratch is a lot like playing with Legos (which shouldn't be a surprise, as this same MIT group created the Lego Mindstorms robot programming tools). To create a set of actions for a sprite I simply locked together different actions controlling movement, sounds, appearance, environment sensing (like bumping into things) and user interactions. I could also define unique variables for sprites, such as in one sample application that worked like a Magic 8 Ball for fortune telling.
Along with the ability to import images, Scratch also let us import sounds and music directly from standard formats such as MP3.
Throughout the development process I could continually test my application, either directly on the stage or launched in a full-screen presentation mode. It's also easy for kids to share the games, simulations and animations that they create, by uploading them directly to the Scratch Web site.
While I was initially confused a bit by the Scratch interface, once I figured out how it worked it became very simple to create basic animations and applications. For a kid it would probably be even easier.
For the most part, Scratch has more in common with Flash and dynamic animation tools than it does with traditional programming languages. But some of the applications that I've looked at that were created by kids include some complex statements built into their Lego-like building blocks. These young developers have clearly grasped core principles of good application development.
If there are any young people in your life who are even slightly interested in computers, games or programming, it is definitely worthwhile to introduce them to Scratch. It's a free download at http://scratch.mit.edu/download.