Two experiences in my life have shaped the way I try to talk about technology. One was over ten years ago when I taught a room full of retirees, long-term unemployed, and recent immigrants basic computer skills. I realized that I could throw many of the subjects I had studied out of the window and that the best way to teach people was to give them a reason to learn. Fast forward to last year (and a subject I wrote previously on SitePoint) when I taught programming to a group of recent Syrian refugees. Again, I had to throw away much of my own learning and preconceptions and think afresh.

I have no children, and nor am I interested in having any, yet, I have developed an interest in understanding how to teach younger generations the best ways to learn one of the modern world’s most essential skills: How to code.

Visual Coding

A lot of projects aimed at children focus on visual learning, such as teaching concepts with draggable, interlinking blocks for creating visual applications like games and animations.

Scratch

Scratch from MIT was one of the earliest contenders, using simple verbs and characters to describe programming concepts. For example, ‘repeat’ is a loop, or ‘move’ and ‘play’ describe actions characters can take.

The tutorials are easy to follow with a couple of concepts that may confuse children but cover enough ground to cover animation, interaction, and even rudimentary artificial intelligence.

Scratch is popular, taught in schools and after school clubs worldwide, and is also a common option for older people looking to learn to code.

Hopscotch

If you’re an iOS user then Hopscotch was highly recommended by a couple of my friends who are parents. It engages children on the devices they are commonly glued to and takes them straight into coding bright and colorful games based loosely on popular favorites.

You can use the app, forums, and video tutorials for free, but to use your own assets you will need to pay for a subscription.

MIT App Inventor

App Inventor is another browser based option that focuses on creating Android apps. The interface design is reminiscent of the one found in Android Studio but also offers the ability to create basic application logic in the same interface. It’s a more complex option but offers a better transition to advanced programming.

Stencyl

Creating with Stencyl looks similar to Scratch, but with a non-browser application that can publish to a variety of formats. As you develop your skills you can pay to unlock the ability to publish to all targets and make money from your work.

The learning curve is steeper, but the opportunities are greater, and to help Stencyl offers education discounts and resources.

Swift Playgrounds

I have loved the Swift language since its inception, and when Apple announced Swift Playgrounds it looked like a fascinating and more in-depth teaching platform. I don’t have access to an iPad to test it, and looking through the screenshots it’s hard to tell how well it works. Playgrounds take a different approach to other visual learning tools, using real (if simplified) code with instant feedback that you can use in Apple’s Xcode to take a project further into more advanced coding.

I’m unsure how many lessons Apple includes, and how many they will add over time, as jumping straight into Xcode is a big step up.

Minecraft

Minecraft was never intended as a programming education tool, but many wondered what else you could accomplish with the game.

The popularity of Minecraft with children made it an ideal target to encourage children to code and there are a plethora of kits, books, and online guides on how to ‘mod’ or customize Minecraft.

Other Options of Note

Physical Learning

The proliferation of cheaper microcontrollers has led to more affordable ‘robots’ that extend the concepts from applications such as Scratch to programming physical devices instead of sprites.

Sam Labs

I met the Sam Labs team at last year’s IFA in Berlin and was lucky to get sent a review copy of their curious cars kit. You can read my full review here, but the premise is simple. The Sam kits are a collection of small blocks that connect with each other (and an app) via Bluetooth, with each block performing a particular function, such as switches, sensors, and motors.

Each kit comes with a booklet of projects to try, but you can also download an extra application to create your own unique projects.

Lego

Lego Mindstorms has existed for years, offering a simple way to program the toy. At CES 2017, the company announced ‘Boost’. The details are sketchy, but the kit will supplement existing Legos with a Scratch-like interface, bringing (literal) life to them, and offering a more entry-level platform than Mindstorms.

Raspberry Pi

The Raspberry Pi is a flexible device not designed for one single use, but unsurprisingly has a large community focused on teaching coding.

As the device runs Linux, it’s usage is flexible, but most child-focused resources use the Raspberry Pi to run some of the other applications covered later in this article.

Microbit

I am just old enough to remember the BBC Micro, an early (1980s) computer funded by the BBC and British government (yes, the organization that makes TV and radio shows) with the aim of bringing affordable computers into schools.

Edison

Another small programmable robot that also connects with Legos, the Edison focuses on robustness and affordability.

It has over ten lesson plans prepared and software available for all major desktop and mobile operating systems, making getting started with the Edison an easy task.

Robots like the Edison typically work with a combination of the path you program for it in the application coupled with checkpoints for which the robot aims. With the Edison, there is an A1 sized mat with six barcodes you can program it to move to or between.

Code clubs

Sometimes children learning with other children in the hands of an experienced passionate educator is the best option, and there has been a global wave of after school and free time coding clubs aimed at children. Of course, these will vary depending on where you live, so if you can’t find a local chapter then use your search engine of choice to find local alternatives.

Code Club International

With volunteer-run clubs in over ten countries, Code Club International offers one of the most comprehensive support networks, and focuses mostly on developing with Raspberry Pis.

Coder Dojo

With Dojos all over the world (I can see two listed near me), a curriculum that covers multiple languages and a new eLearning platform to support the lessons, CoderDojo looks like one of the most promising options, but it’s hard to tell how active some of the chapters are.

Code-It

For the Australians among you, Code-It offers in-person (typically day long courses) in game creation, animation, and robot programming.

Pi Jams

If you’re the owner of a shiny Raspberry Pi and looking for like-minded enthusiasts, there are frequently Pi Jams around the world to help with questions and problems.

The Code Generation

I would love to hear your experiences and thoughts on teaching coding to children. What have you tried? What techniques and subjects worked for you and what did the students accomplish? I’d especially love to know what they did next, how many children took the skills they learned to the next level, and what they created.