Helping Children Learn Programming

As I’ve worked through teaching my kids programming, I’ve learned a couple of tricks to gear the teaching more for how they learn. It’s not like you can sit a child down in front of a computer and tell them to study dry, boring programming books that don’t seem to have any relevance to what they really want to do with a computer. It’s hard enough for me to do that as an adult, and I’ve been programming for 20 years.

The alternative is to meet them where they are. Children rely on stories and play to figure out how the world works. So, teach programming through stories and play and it will be much better understood and retained.

Part of what makes programming so hard for children to understand is that it’s not physical. It is, at its core, ideas and electricity, so a lot of the best tools for teaching children programming frame the programming concepts into a more tactile and physical concept. If you can frame the concept into a real world metaphor that they already understand, all the better.

That’s one thing I want to accomplish with the Codecasters series of books that I’m working on, I want to bring a new physical metaphor to programming that kids can learn from and apply to their programming education. Most kids already understand Minecraft, so why not use that to teach the concepts needed to make a game like Minecraft?

But, before those books come out, here are some other resources that can help get your child ready for the future:

  1. Scratch – Scratch is an online application that was built and is run by the Massachusetts Institute of Technology and has become a very popular first introduction to programming for many young people.

    When you first visit, it looks like it’s just a bunch of simple games to play with. But each one of those games was built by someone just like your child and the full code for every game is always available on the site. Find something you like to play? Load it into the editor and see how it works. Then, change something and see what happens. This kind of interactive tinkering is a great way to dive into a big complex subject like programming because you can not only see a full working example already made, but also change, break, and fix it yourself to see how it works.

    Now, the biggest problem with the site is the lack of guided tutorials. But, since it’s focused more on experiential learning rather than by the book lessons, it can still be an important part of your child’s programming education.

  2. Code Combat – While this does end up being a mildly violent game, it’s a great “code the robot” style learning tool that is great at teaching how to type out code.

    The idea behind Code Combat is that you are giving instructions, through code, to a knight that is fighting their way through a series of levels. This mechanic is a great way to take kids through advanced concepts in programming one simple step at a time. It’s also a fun game. Go through the dungeons, collect the gems, and learn how to program as you go.

    I love that this is teaching real text-based programming (and keyboard use) in a fun and exciting game. It teaches kids how to think in code to solve ever more complex problems and the concepts they’ll need that computer programmers use every day.

    I also like how they use real world metaphors to introduce certain concepts. For instance, you get a pair of shoes at the beginning that give you various move methods and, later, a sword that gives you the attack() method. I’m trying to do the same kind of thing in the Codecasters series and think that it really helps children visualize what is ultimately a virtual programming concept.

    If you use this, I humbly ask that you set the programming language to JavaScript. It’s a more popular language than Python in general and will teach a syntax that is more widely used in the programming world. There are some that would disagree with me on that because they’ll say that Python is easier to learn, but Kelly didn’t have any trouble picking up JavaScript and can now use that same knowledge to program for webpages (that only use JavaScript natively) and some programming right in Minecraft.

  3. Hopscotch – The last tool I want to talk about is Hopscotch, an iOS application that is a lot like Scratch but simpler and more intuitive. Sadly, it is only available on Apple devices and best on an iPad, so if you don’t have one, you may be out of luck for now.

    The thing I love most about Hopscotch is how quickly my daughters picked it up and ran with it, making maze games and animations on the first day they played with it. It has a nice collection of interactive tutorials that will get anyone up to speed on how to use it and teaches a lot of the concepts that will be needed to make your own creations later on.

Those are the big three at the moment, but if you’ve run into anything out there that I might not have seen yet, let me know in the comments. And if you’re interested in hearing more about the Codecasters series of books, about a boy in a Minecraft style world that learns the ancient art of Codecasting, sign up for the mailing list and you might even get the first book free for helping me out.