UPDATE: I will give a talk about how to get students coding at the Digital Shoreditch 2013 festival.
Inspired by Ian Livingstone’s campaign to change the way computer science is taught in schools, I dreamed up my own little curriculum to get kids motivated about coding and software development. It’s pretty straight forward:
Phase 1: Get them hooked
We start off with playing the game Civilization (whether Civ 5, 4, or 3 depends on the budget and provided computer power by the school) intensively. The first two lessons we just play, in order to get familiar with all aspects of the game and to get a good feeling how the mechanisms work together. Homework also consist of playing Civilization. A positive side effect is that the kids learn a about culture, technology, science, and politics on the fly. However, it’s not about learning facts but how methods and inventions are interconnected. Once the “just one more turn” effect has set in, we proceed to the next phase.
Phase 2: Start (visual) coding
We start analysing the game using Joris Dormans’ Machinations tool. Step by step we recreate the core mechanisms of Civ and cast them into feedback loops until we can play Civilization in form of a Machinations diagram. It’s accessible, it’s easy to learn, it’s highly iterative, it’s intrinsically rewarding, it’s fun.
The whole process is completely visual, no line of code has to be written. It is the perfect way to become familiar with the inner workings of the Civ game, with it’s economy and logic. It is also perfect to get a first grip on coding, because the resulting Machinations diagram is in fact a program. This is true, intrinsically rewarding gamification, no need for badges.
Phase 3: Creating a text adventure
Text adventures are also a great way to learn a programming language. Thanks to Alex Warren’s QUEST tool, kids can start creating their own interactive stories using a visual editor first. They can then dive deeper into the underlying code to get in touch with variables, functions, loops, expressions, objects, etc.
It is great fun to create your own little interactive game world and then learn how the code behind the scenes brings the world to life.
Another great tool to get in touch with coding is Code Academy.
Phase 4: Developing a 3D game
Fast forward to Unity3D. This might be ambitious but this game engine provides everything you need out of the box to develop computer games. Students can use this in-depth tutorial to create a 3D platform game step by step.
My little curriculum scales from “no idea what coding is all about” to “I want to become a developer or game designer”. At the moment this is just a very quick and dirty idea. However, even Phase 1 has enough potential to break the ice when it comes to computer science. All it needs are a few copies of Civilization and a browser to run the Machinations tool. Actually, it doesn’t even have to be Civilization. Let the kids analyse a free-to-play browser game of their choice, even FarmVille will do, or Civ Online, of course.
If you are interested in pursuing these ideas, please get in touch.