Kids Coding

There's a wide range of apps and websites to help kids get into coding.

The simplest apps all used a block-based approach, where you build a program by dragging and dropping blocks that snap together. Each block is an instruction. Games will start with very instructions available and build up as you progress through the levels.

Fitting the kid to the tool is a real art-form!

If someone is forced to use a tool that they are far too advanced for: it is very frustrating. If someone is forced to use a tool that they are not ready for: it is very frustrating.

But the problem is... even when the tool is a good match: coding can still be extremely frustrating! It's made frustrating by our mindset, or "attitude", and how this translates into our actions and our beliefs.

So here's a handy guide to help you instantly trouble-shoot the cause of their feeling...

Feeling Cause
Student is frustrated Perhaps the coding environment is too hard for them!
Student is frustrated Perhaps the coding environment is too easy for them!
Student is frustrated Perhaps the coding environment is well suited, but their mindset (their attitude) on the day is not helping them.

Do you see? It's an art-form!

The best thing is to try and "unpack" the feeling. Are they bored? Are they confused? Here's a slightly more nuanced table...

Feeling Cause
Student is very confused Perhaps the coding environment is too hard for them!
Student is bored Perhaps the coding environment is too easy for them!
Student is angry Perhaps the coding environment is well suited, but their mindset (their attitude) on the day is not helping them.

And I say "perhaps" because changing the coding environment might be too drastic a change.

If they are confused or angry: perhaps they just need coaching or prompting or quizzing or guidance within the current environment.

Or if they're bored they may just need to find a way to skip a level or two within the environment, or simpler still: find a way to "speed up" the running of the examples they are tinkering with. (Sometimes there are fast-forward or speed controls... I wish more items offered this)

A learning path for very young kids

For young kids, even pre-reading, and for absolute beginners of any age, here's what I suggest you try:

First get them to do the "Kids Coding" doodle from google.

It looks like this:

google_bunny.png

It's super cute, there are just 6 levels, and it teaches you the basics of writing a short program, running it, and trying again. You learn to avoid repetition by using simple loops.

Then get them to try Course 1 from Code.org.

This course starts extremely slowly, so you might need to help them skip over a few of the easier lessons: but only if they're bored... if they're having fun let them go as slow as they want.

code_dot_org.png

Those two programs represent a great start!

Next, get them to decompile the Windows Operating system and have them patch a DLL at runtime. Woah, no, wait a second, we need to step back a little.

Beyond Blocks: What comes next?

Drag-and-drop block coding can take you pretty far, but eventually you'll want to graduate to a text-based programming language.

An intermediate step between "blocks" and "text" is the style used by Tynker -- where the code is shown as blocks, but if you move a slider across it becomes text. This is a neat idea.

Once someone is ready for a pure text language, the two main contenders that come next are Python and Javascript. I recommend Python. But if you choose Javascript, that's OK too.

Starting with Python, my general thoughts are:

  1. Install an editor, I suggest Visual Studio Code.
  2. Install the python plugin for visual studio code, and
  3. Install the python 3 language itself (the plugin, step 2, will direct you to install python 3 anyway).

Now you need to have a series of challenges, ideally created by the student. The first few programs are usually the same:

  1. hello world Write a program that output "hello world"
  2. hello name Write a program that asks you a name and echoes it back to the screen
  3. multiply two numbers Write a program that reads in two numbers and writes out the result of number1 times number2.

Not very glamorous ideas, but when you're making things happen, altering the world, it is kind of exciting!

For me, the main program after that was text adventure games. This presented a steady onramp with, ultimately, a lot of challenges.

Continuing Education: forever plan?

After getting starting projects under your belt you can continue to learn and train via sites such as:

  • exercism — Code practice and mentorship for everyone; 3,093 exercises across 52 languages; insightful discussion with welcoming mentors; free forever.
  • Code wars — Achieve mastery through challenge. Improve your skills by training with others on real code challenges.

When you have problems that you can't solve and if you don't have a local mentor to turn to, you can ask at stack overflow

Image Article
Google Doodle: Kids Coding Google Doodle: Kids Coding
Course 1 from Code.org Course 1 from Code.org
Cargo-Bot Cargo-Bot
LightBot LightBot
Daisy The Dinosaur Daisy The Dinosaur
Run Marco! Run Marco!
Fix the Factory Fix the Factory
Kodable Kodable
RoboZZle RoboZZle
Human Resource Machine Human Resource Machine
Hopscotch Hopscotch
Swift Playgrounds Swift Playgrounds
Small Basic Small Basic
Tynker Tynker


Here are some of the best:

The difficult thing is finding one that moves at the appropriate pace for your child's current age, knowledge and interests. If your child is bored, see if there's a way to make the game run faster or a way to skip ahead by a few levels.

There are also various puzzle games that introduce a programming concept.

Here's a tweet that lists many (in 2020) and no doubt the replies will have more:

Courseware

Further reading

See also