National Computer Education Week, aimed at recognizing the crucial role of computing in today's world and at supporting efforts to boost computer science education at all levels. The event purposefully coincides with Grace Hopper's birthday tomorrow. But it also happens to come the same week that the Program for International Student Assessment has released its data about student performance and finds that, compared to others worldwide, U.S. students get a C for math and science.
According to ACM and CSTA, two organizations that address computer science education, very few states recognize computer science as a core graduation requirement, and states' curriculum standards focus on computing skills rather than computing concepts. (You can see an interactive map of how the different states compare).
We wrote a story earlier this fall with 4 suggestions for some of our favorite programming tools aimed at kids. And that list is worth repeating: the graphical programming language Scratch, the programmable robotics of Lego Mindstorms, the 3D programming environment Alice, and the Android App Inventor.
But in the spirit of National Computer Education Week and the hopes that we can encourage more kids not just to use technology but to build technology, here's a list of 4 more:
A product of Microsoft FUSE Labs, Kodu is a visual programming language made especially for creating games. Kodu's language is entirely icon-based and is fairly easy to learn. By getting children to think about "if/then" statements, Kudo helps teach important programming concepts of actions and conditions. Kodu works on PC and XBox 360.
Another Microsoft project, Small Basic is a beginning programming language - a variant of BASIC, but based on the .NET platform. Small Basic is designed for students between the ages of 10 and 16 and consists of the language, the programming environment, and libraries. There are a number of resources available for working with Small Basic at TeachingKidsProgramming.org.
Arduino is an open-source electronics prototyping platform with both a hardware and software component. 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.
Squeak is an implementation of Smalltalk, an object-oriented programming language. The latter was designed in the 1970s in part as an educational tool for teaching programming. Squeak may be best known as part of the Children's Machine, part of the One Laptop Per Children initiative. Squeak is closely related with Objective-C, and Smalltalk and Squeak have both been influential on the development of other languages.
What other languages or platforms would you recommend for budding computer programmers? Python anyone? Let us know your experiences teaching kids to code in the comments.