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 building 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...
|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...
|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:
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.
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.
|Google Doodle: Kids Coding|
|Course 1 from Code.org|
|Daisy The Dinosaur|
|Fix the Factory|
|Human Resource Machine|
Here are some of the best:
- Scratch (and Scratch Junior)
- Code Combat
- Course 1 from Code.org
- Logo (the original)
- Lego Mindstorms
- Small Basic
- Swift Playgrounds
- MakeCode — Hands-on computing education from Microsoft
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.
- Run Marco!
- Daisy The Dinosaur
- Fix the Factory
- Google Doodle: Kids Coding
- Teaching Kids Programming — courseware Lynn Langit has worked on