Just recently I was lucky enough to attend a Hackjam session at the wonderful Educon conference here in Philadelphia. After we hacked Monopoly by reinventing the game, we were introduced to the tool Hackasaurus, which allows students to not only see, but manipulate the code on a website.
Some people may question the ethics behind teaching kids about "hacking" websites, but in this context, the idea is not for students to take down websites à la Anonymous, but rather to see that web pages are not magic. As computers, phones, tablets and web tools become more and more user-friendly, it becomes easier to forget that there is a human being behind all of the software, games, apps and websites that we use. Hackasaurus shows students the code behind websites, and how you can alter the site by altering the code.
With many schools dropping computer science programs, and with fewer and fewer students leaving school with these skills, there are fewer participants in creating software, games, apps and the like, and more people who are simply consumers of these products. With fewer participants comes less innovation. With less innovation, the consumers become trapped in whatever they are being sold. In addition, with less innovation comes less scientific progress. Without innovation and programming skills, devices like robotic arms on the Mars rovers or realistic limbs for soldiers returning from war would not exist.
Programming the Future
We need to support and maintain programming and coding in all our schools -- not just our technical high schools or institutions of higher education. And we need to teach computer literacy for more reasons than innovation and consumerism. Programming requires critical thinking, math skills, communication skills, problem solving, creativity and perseverance. These are all the things that companies can't get enough of these days when looking for new talent.
As an example, my third-to-seventh graders are learning Scratch, free programming software from MIT, to create games and animated scenes involving characters or objects called sprites. During the process, they have been forced to think logically ("If I want my sprite to... then I need to tell it to do this first, then this..."), they need to understand math ("How many degrees do I want my sprite to rotate? Which x, y coordinates do I want my sprite to glide to?"), they need to sweat a little ("Why isn't it working? What do I need to change?"), and they need to be resourceful ("Is there anyone else who has been successful with what I'm working on?"). Most students start off frustrated and end up completely engaged. They also end with a better understanding of how their favorite games work. And they experience the important lessons of learning from failure and learning to think like a programmer when they consume media in their lives.
Author Douglas Rushkoff has written numerous books on the intersection of technology and humanity, including Program or Be Programmed: Ten Commands for a Digital Age. Below is a video of Rushkoff speaking at the South by Southwest 2010 conference in Austin, TX.
Do you have other resources you use? Please share them here.