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.
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.
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.
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.