How do you get young kids to code? By giving them the tools to create a game where they control a Curiosity-like rover on the surface of Mars, according to Microsoft.
Kodu is a programming game, with a simple tile-based visual development environment that makes it easy to build object-oriented, event-driven programs. With Kodu, while you're building a game, you're learning to program.
A new version has just been released, Kodu Mars. It takes the educational programming environment to the dusty surface of the Red Planet with a new character to control, Rover. This is a slightly anthropomorphised version of NASA's latest Martian explorer, Curiosity — complete with sampling tool and scanning laser.
Running on Xbox and PCs, and working with both keyboards and game pads, Kodu is free and easy to get, with collateral for teachers and students — as well as a community of engaged and helpful games builders.
Kodu — part of a long-standing collaboration between Microsoft and NASA's Jet Propulsion Laboratory — builds on similar roots as Lego's Mindstorms, bringing programming to the living room and to the familiar game console.
NASA and Microsoft have worked together already on several projects, including a Kinect Mars Rover Landing game, in which you get to control Curiosity as it plunges through the Martian atmosphere in its seven minutes of terror, and a live Xbox broadcast of the rover's landing on Mars.
The Kudo game aims to tackle a big question we're only just starting to answer: how do we get younger children coding? While devices like the Raspberry Pi have attracted attention, these are not yet widespread in homes and schools. And while new low-cost ARM-based boards are slowly starting to leave the production lines, they require some technical knowledge and are more for teens and university students who've already discovered programming.
Microsoft's team collaborated with a games development house to produce four sample levels for the Kudo Mars game, and worked with NASA and Arizona State University to develop a teaching curriculum based around controlling a rover.
Getting tools like this into the classroom is important. The tools in Kodu — especially the tile-based visual programming environment and event-handling features — aren't just teaching coding, they're introducing complex computer science topics in a child-friendly way.
The Mars expansion takes things further, as it provides an experience that goes some way to helping users think about what needs to be done when programming a Rover on Mars.
Unlike other game scenarios, this is intended to spark the imagination via a peaceful engagement with rocks and science rather than through dynamic chases and combat. The Rover character only implements actual Curiosity features and capabilities, with its scanner, camera and drill bit. Instead of combatting enemies, your game involves trundling over the Martian desert, examining rocks, eking out power and taking pictures.
One of the interesting elements here is that it's not just computer science that Kodu Mars is aiming to teach. It's also meant to get kids thinking about science; specifically, about how to design an experiment in an environment that's based on Mars Orbiter terrain maps of Gale Crater.
Kodu Mars also adds more programming constructs to the visual language of the game. Its robots need to run autonomously while light-minutes away from a controller, and this means adding new constructs around Kodu's path navigation features.
With these, kids can draw a path on the screen for the Rover to follow and use the new End Of Path command to trigger an action. It's easy to see this being used to navigate the Rover up a slope and around obstacles to reach a rock, with the scanning actions triggered at the end of the path.
As the game provides sample levels, there's existing code to examine, showing how complex events and actions trigger subroutines. New operators help here, and the update adds support for comparisons and logical operations that can also be used to call pages.
Rover is an entertaining new character, but it's also an effective simulation of a scientific robot. The code you or your kids write can't yet be used to control a physical device — but it's not far from it.
According to Microsoft, over a million children around the world are using the free PC Kodu, meaning there's already a community of users and teachers — of people building stories and experimenting with them.
There's something important in that final point. Code is a form of storytelling, especially if you work with agile development methodologies and functional languages. Kodu code isn't just a game; it's an introduction to the way we develop code and in the techniques we use in our own development teams.
With that in mind, perhaps we should bring Kodu into the office as well as into the classroom. Who knows what we'll learn?