In a recent PC Pro article, Professor Steven Furber, developer of the ARM microprocessor, laments the sharp decline in interest in computer science classes in the UK. And although the U.S. hasn't seen that same drop in enrollment, a recent survey of some 14,000 U.S. high school teachers by the Computer Science Teachers Association found that only 65% of respondents taught in a school that offered some sort of introductory computer science course.

As our world becomes more tech-oriented, educators are faced with not just teaching children how to use computers, but how to build and program them as well.

"We need to get students interested in computer science and that has to be done at an early age before they decide (incorrectly) that they can't do computer science or that it is dull and boring," says Alfred Thompson, Microsoft's K-12 Computer Science Academic Relations Manager. "Teaching computer science in an interesting fashion while students are young and impressionable and searching for interesting things they can do with their lives can potentially lead to more diversity in the field. And we need more diversity in the field."

Fortunately, there are a number of great tools to teach programming to K-12 students, along with a lot of resources for computer science teachers:

1. Scratch

Developed by the MIT Media Lab, Scratch is a graphical programming language for children age 8 and up. Since its release in 2007, over one million projects have been shared on the site. That sharing aspect is important as projects posted are available to others to download and remix. Scratch is available free of charge, and runs on Mac, Windows, and Linux computers. For those working in Scratch, the new Scratch Wiki is a good resource.



2. App Inventor

In July, Google announced the launch of the Android App Inventor. App Inventor uses building blocks, of sorts, to help you design your own Android applications. Like Scratch, the App Inventor has roots at MIT, as the project was led by Professor Harold Abelson, quoted in a New York Times interview as saying that the goal of the App Inventor "is to enable people to become creators, not just consumers, in this mobile world."

App Inventor is still in closed beta, but it was mentioned in our survey of teachers' most anticipated back-to-school tech tools. If you're interested in App Inventor, the Google Group is very active.



3. Alice

Alice is a free and open source 3D programming environment designed to teach students object-oriented and event-driven programming. In Alice, students drag and drop graphic tiles in order to animate an object and create a program. A variant of Alice, Storytelling Alice was developed by Caitlin Kelleher as part of her doctoral work in Computer Science at Carnegie Mellon University. By emphasizing animations and social interactions, this approach was found to greatly increase the level of student interest in programming.



4. Lego Mindstorms

Lego was recently voted the "most popular toy ever," and despite all the wounds from stepping on my son's Legos while barefoot, I am still remarkably fond of the toy. Add programmable robotics to the mix, and you have Lego Mindstorms.


There are numerous other programs aimed at the K-12 level, including Small Basic, CHERP, Kodu, and of course BASIC.

Whether or not computer science becomes a baseline subject like Math or Writing or Social Studies remains to be seen. But the lessons learned from computer science - logic, critical thinking, problem solving - are crucial. So teach kids to hack while they're young.