Getting Kids Interested in Programming with MIT's Scratch
By day, I am mild-mannered web developer, but by night I go by another title: "Dad". Like most parents, I hope that my children will spend their days doing something constructive instead of wasting precious early development time absorbing mindless entertainment. Bonus points if those activities are things I can get overly excited about showing them.
So one night I asked my seven-year-old son if he wanted to learn how to program. "Well, yeah, but I only just started to read, I only know so many words," he said with concern. "No worries kiddo, most of this stuff is barely in English anyway, so that won't really matter," I said. "I will set my alarm clock for 6:00 am," he replied. Then began the quest for the appropriate way to introduce this early learner to the concepts of programming without overloading him with so much information that he would become discouraged. On the advice of an old friend, I was turned on to MIT's Scratch.
Scratch can be run on Mac, Windows, or Linux. Old hardware is generally not a problem though it can play and record sound clips so you may want to have a mic handy. I dug out a ten year old WinXP laptop and set it up for my son with Scratch and it works great. The first thing you will want to do is download the program and get it installed. After install I recommend you go to the help menu > help page > reference guide and spend some time familiarizing yourself with the details of the program that I will not be covering here.
Scratch uses a simple drag and drop interface that exposes the user to the most fundamental concepts of programming like control structures, events, listeners, variables, and operators all while incorporating multimedia. That sounds like a mouthful to the uninitiated, but the folks at MIT have done such a solid job of putting it all together that a seven-year-old can start to piece together some "code" after only a few minutes of instruction.
The interface is divided into three columns. The first is where you can select "code" blocks from libraries of presets. The middle acts as the script window and is generally where you piece together your project. The last column has a preview window and the sprite library.
Scratch focuses on sprites (objects) that can be placed in the project stage. You can create your own sprites or import them from other sources. Sprites can have many costumes which can be thought of as frames for those familiar with animation tools like Flash. For example, if you are doing a character with a walk cycle, you create a sprite with several costumes, each costume being a different frame in the movement of the walk.
But the genius of this program is the script window. You can create scripts on the stage itself and on all of the sprites within the stage. Without even bringing up any acronyms a child is not going to fully understand, you've already got them unknowingly doing object oriented programming.
Though the libraries available are relatively small, within them you will find almost every core concept that make up the fundamentals of the languages we developers use every day.
I do not recommend getting too in depth with a young child right from the start. Remember, the first goal is to get them excited and wanting to explore. Probably the quickest way to get a kid captivated is to go through the Control panel and set up some event listeners. Within a few seconds of drag and dropping into the script tab, you can have something moving around the stage and responding to the child's clicks.
Right around then I saw the look of recognition in my son's eyes that he had the power to program this sprite and make it do whatever he wants it to do. To a seven-year-old, I can only imagine that it is mind blowing.
I have to admit, I had fun tinkering around with Scratch as well. After only an hour or so my son and I had made some interesting little animations complete with loops, variables, operators, and sounds that we recorded within the program.
If you want to get a little more advanced, you can play around with the mouse position interaction, pen and drawing tools, play notes feature (complete with keyboard) and it even has rudimentary step debugging.
For the Drupal folks out there it has one more thing that will set your ears ablaze: there is a kid-friendly Scratch community! Within the 1.3 million member community you can find well over 400,300 user-created projects online that you can download local. This allows your kids to learn from what others have done with Scratch or even extend someone else's project. Then as you complete your own projects you can easily upload them to the community from right within the Scratch program.
After some time behind Scratch, your kiddo(s) will have been exposed to most of the programming fundamentals, an open source styled community, learned a ton, and had a great time doing it. That parent of the year award is as good as yours.