http://blogs.kqed.org/mindshift/2011/05/5-tools-to-introduce-programming-to-kids/
5 Tools to Introduce Programming to Kids
It’s hard to argue with the importance of teaching students how to use computers — how to turn on, log on, search the Web, and use applications. These skills are absolutely necessary for students’ academic success as well as for their future job prospects.Being able to use the Internet and operate computers is one thing, but it may be just as valuable to teach students how to code. Giving students an introduction to programming helps peel back the layers of what happens inside computers and how computers communicate with one another online. Programming knowledge, even at a very basic level, makes technology seem less magical and more manageable. Programming also teaches other important skills, including math and logic.
Many students don’t have access to computer science courses until college, and that’s a missed opportunity to introduce younger students to programming. There are many tools out there that provide a great introduction to computer science for K-12 students, but here are a few of our favorites.
SCRATCH

Developed by the MIT Media Lab, Scratch is a visual programming language for children age 6 and up. Since its release in 2007, over 800,000 users have joined the Scratch website and have shared over 1.7 million projects — from games to animations. That sharing aspect is an important part of the Scratch community, so the projects that are uploaded to the site are licensed under the Creative Commons attribute and share alike license so that others can download and remix them. Scratch is available free of charge and runs on Mac, Windows, and Linux computers.
ALICE

HACKETY HACK
Hackety Hack is an open source application that teaches the basics of programming in the popular Ruby language. Hackety Hack offers an interactive tutorial that runs on Windows, Mac, and Linux operating systems. While both Scratch and Alice use a graphical programming language with “blocks,” Hackety Hack teaches the basics of Ruby syntax. The tutorial and the text editor are well-integrated, so there isn’t any flipping back-and-forth to move between the How-To guide and the actual coding. Hackety Hack gives students a solid foundation in the language so they can quickly and easily start building their own apps in Ruby.
ARDUINO
Arduino is an open-source electronics prototyping platform with both hardware and software components. Arduino’s hardware is programmed with a language similar to C++, and although it may not be the easiest of entry points for learning programming, there’s something about building things that actually move that can be pretty compelling. Projects that use Arduino to introduce children to programming include a modification of Scratch to support simple programming on the Arduino hardware. As Google recently announced that it would allow Android mobile devices to communicate with Arduino hardware, look for more opportunities to work with this platform in the future, perhaps even via the Android App Inventor, a tool that provides a visual interface for building Android apps.
LEGO MINDSTORMS
One of the most popular toys in history, Lego may be best known for its brick-building. But Lego Mindstorm

These are just a few of the options for introducing someone to programming. What other languages or tools have you used — in the classroom or at home?