Scratch is a great environment for learning to program produced for free and to a very high standard by the Kindergarden Lifelong Learning Group at MIT. This is the home of Logo and many other computing frameworks for children.
Scratch is aimed at 8-12 year old children although it can be used to teach programming concepts to younger children and adults. The design environment runs on PCs, Apple Macs and Linux and the final projects can be shared and run on most web browsers.
Scratch is designed to encourage creativity and allows the programmer to incorporate their own pictures and sounds to create multi-media applications very quickly. A young programmer can create games, animations, or story-telling applications with just a few weeks of experience with Scratch.
The Scratch environment comprises a small screen area, or stage, upon which various programmable sprites may roam. Sprite behaviour is determined by a program which allows the sprite to move around the screen and respond to events including interactions with other sprites and keypresses from the user. Each sprite has a number of costumes which change its appearance to product an animation type effect. Speech bubbles and sounds (including playing of mp3 files) can also be made by a sprite.
Programming is effected by dragging blocks from the project design application and filling in the spaces required for each programming command. This avoids the need to type commands and allows young programmers to create programs without syntax errors caused by mis-spelling keywords. Each sprite can contain several program scripts which might be a sequence of commands performed by the sprite each time a particular event occurs. Control blocks allow for iteration of commands so that they can be repeated any number of times or continue forever to define the behaviour of the sprite. Conditional statements allow for different sequences of commands to be executed according to the current status of the Scratch environment.
Scratch is inspired by research into robotics and allows sprites to interact with each other either by broadcasting and reacting to messages or by monitoring the distance to the nearest sprite. A number of sprites can exist on the stage, each behaving independently and reacting to the behaviour of others, encouraging the emergence of interesting behaviour.
Scratch projects are easily shared on the internet and will run on any web browser using a java applet. Scratch programmers are encouraged to load their projects onto the Scratch website (scratch.mit.edu) to share their projects and allow others to download and modify the underlying program.
Individual sprites can also be exported and imported to projects for collaborative projects. Scratch is particularly suited to the creation of simple games and entertainment programs and also to the creation of story telling environments with sprites moving about the stage with speech bubbles and sounds. A simple board can also be purchased from MIT with a few sensors including a light sensor to allow scratch applications to interact with the real world.
Scratch is a limited programming language designed to allow young programmers to easily create applets containing intelligent agents that can move, change appearance, make sounds, and interact with each other and the user. There are no facilities for creating procedures or shared code with parameters, text processing, mathematical functions, data representation or storage, networking, and many other features that make Logo, for example, a rich language. Many of the features of Scratch exist in StarLogo (also from MIT) but Scratch provides a top quality interface that encourages creativity through computer programming and a website to encourage sharing and learning.
Scratch is the perfect introduction to programming for young programmers and a welcome boost for teachers wary of teaching programming with Logo or frustrated with the quality or cost of other child oriented programming languages.