“Have you ever thought about learning to program?”

"A student at Joan of Arc Junior High masters a Logo procedure."

“Have you ever thought about learning to program?”

That’s the first sentence in a “recent blog post”:http://mojang.com/2012/11/minecraft-is-coming-to-the-raspberry-pi/ by the Swedish game company Mojang, creator of the “hit game”:http://minecraft.net/stats, Minecraft. The post describes their recent and upcoming work to create a virtual environment where beginners can explore the power of programming on a low-cost, open platform. While this may not seem interesting to anyone unfamiliar with “Minecraft”:http://minecraft.net or the “Raspberry Pi”:http://www.raspberrypi.org/, the combination with early programming learning is a big deal to me. Here’s why. 

h2. Teaching Programming Is Playing the Long Game

Part of my job is to hire people who will raise the average at Atomic Object. Even when we aren’t actively hiring (“we are”:https://atomicobject.com/careers), we’re thinking of ways to plant seeds that will eventually improve our professional community and our own hiring prospects. An important component of that is investing in young programmers. That’s why we run BitCamp and support local FIRST robotics teams.

I’m also a father. Ushering my kids into a world of ubiquitous computing is an interesting and reflective challenge. Even if they end up nowhere near computing career-wise, at least they will have a better understanding of what Dad and his friends do all day at work, and they won’t be dumbstruck by their smart phones.

h2. Early Programming Can Be Simplistic or Dull

Projects like “Scratch”:http://scratch.mit.edu/ or “Alice”:http://www.alice.org/ are amazing efforts, but they were created by educators and students with learning in mind. While there’s nothing wrong with that, I feel that there’s too big of a disconnect between animating a 2D sprite of a cartoon cat and the average experience an 8-year-old would have playing Angry Birds or Minecraft. To me, they seem either too hermetic or too broad to capture young attention before learning kicks in.

h2. Minecraft Is Fun and Engrossing

As a simplified “model” of the real world, Minecraft is instantly more accessible to youth than a blank canvas and a text editor — or even a drag-n-drop code toolbox. Kids love it. Don’t take my word for it, just look at the average Minecon attendee. The game itself allows primitive programming via its “redstone circuits”:http://www.minecraftwiki.net/wiki/Redstone_Circuits, encouraging the sort of low-level understanding of digital electronics that most kids won’t even recognize as learning about how computers work.

Dig deeper and you find that “Minecraft has an API”:http://wiki.vg/Mojang_API, and even high-level interfaces like the “amazingly cool Purugin”:https://github.com/enebo/Purugin. Using JRuby, Purugin allows players to execute LOGO-like programs in-game and see results instantly in an immersive and collaborative environment. Again, I’m not the only one to see this: Minecraft is “already seen in education”:http://www.escapistmagazine.com/forums/read/7.284986-Computer-Teacher-Uses-Minecraft-as-Curriculum, replacing icons like Oregon Trail.

Logo vs. Minecraft
Which would you rather learn from?

h2. Early Programming Can Be Expensive

As a kid, I could learn to code using cheap, decade-old hardware without being too far behind. Now, the same opportunity seems to cost a lot: a few hundred dollars for a tablet or reasonably useful Craigslist computer. Arduino and the maker movement have provided a tantalizingly low barrier to entry, but microcontroller programming is probably a skill for older kids, compared to the ease of early BASIC or LOGO environments. (Side note: why did all the early languages have to raise their voice?)

h2. A Raspberry Pi Is Cheap and Capable

Enter the Raspberry Pi Foundation. Their single-board computer is cheap and even targeted at learning. It plugs into any modern monitor or TV and can easily be connected to the internet. There are already examples of it being set to this purpose, both in “primary schools”:http://www.raspberrypi.org/archives/2159 and “universities”:http://www.slideshare.net/ltg_oxford/raspberry-pie-an-introduction.

h2. Two Great Tastes…

So back to this announcement from Mojang that they’ve been working on a special Raspberry Pi port of Minecraft with the _specific_ intent of teaching programming to kids:

bq. You can start by building structures in the traditional Minecraft way, but once you’ve got to grips with the in-game features, there’s opportunity to break open the code and use programming language to manipulate things in the game world. You’ll be learning new skills through Minecraft.

So, a cheap platform and an exciting gateway drug of an environment. I predict a big uptake on this one, and I’m very excited to hear the details as they develop.

h2. Maybe You Already Knew All of This

Ok, so you’ve already written a Minecraft plugin or two, and one of your Raspi’s is currently serving up a Python web app remote control for your Christmas lights. Well, how about some ideas to apply when Mojang releases their port?

* Make scripts to build entire buildings procedurally, using composition, or even L-systems.
* Make 3D interactive versions of existing programming games such as “Robocode”:http://robocode.sourceforge.net/ or “Corewar”:http://sourceforge.net/projects/corewar/.
* Make a “live” version of “Light Bot”:http://www.kongregate.com/games/Coolio_Niato/light-bot.
* Make a “rewind button” for use in otherwise-normal Minecraft play that works like a time-warp undo.

Light Bot
Light Bot

h2. Or Maybe You’re Thinking Bigger

Finally, if you’d like to step back a little from my enthusiasm on this topic, “here’s a historic, moving opinion on technocentrism and the future of education by Seymour Papert”:http://www.papert.org/articles/ACritiqueofTechnocentrism.html, inventor of “LEGO Mindstorms”:http://mindstorms.lego.com/.