How to Teach Coding To Kids Using Tools from the Internet
Without even knowing how yourself
This is by no means the only way to do this. I’ve worked this series of steps up from about five years of paying attention to what’s out there, and it seems to work pretty well.
TEACHING ENVIRONMENT
To start with, here are some of the things I’ve learned, particularly about teaching in a classroom, along the way.
First of all, kids talking to one another is not a bad thing. It can be a bit chaotic, but them helping each other, and engaging with each other, and being a little bit competitive, is fine. You just need to pay attention to a few things:
- Don’t let them grab each other’s mouse to show the other person something. Once they do that, the other person stops learning. Instead, have them describe to the other person what needs to happen. That way, they are both learning from the interaction.
- Don’t let them get up and walk around. They should stick to talking to their neighbors. Self-selected seating is okay in this instance, but walking around is just too chaotic (and they’re not coding!).
- YOU should follow the same rules. Don’t touch the mouse. Don’t give them the answers. Talk about the code like it’s a narrative: “When you push the ‘run’ button, go forward three times, turn right, and get the nectar. Then turn left and jump backwards. Is something missing there?” They’ll almost always get what’s wrong right away, and you’ll be teaching them to narrate the code to themselves.
Secondly, start with computational thinking. I know that at Scratch they believe that puzzle-work isn’t really creative, and that kids won’t learn as much, but I find that at the beginning of their learning, they need this crutch in order to understand the structure of how coding is put together. Also, kids like to figure out other people’s work! Later, after they grasp the basics, they can learn by making (and joining the community, and looking at /adding onto other people’s work). But––especially for girls and people from non-computer-literate backgrounds––learning the structure in this fun way is how we lead them forth onto uncomfortable ground in a non-confrontational way.
Thirdly, pay attention to their mental development. Some kids are ready to do this stuff at age 6, but many just aren’t (besides, do they really need all that screen time?). I usually start them on it in 4th grade (age ~9), and go from there.
ONLINE TOOLS to help get the job started
Some of the online tools for teaching coding keep improving and changing, and so this may be obsolete in a few months; but take it as a baseline, try it out, and be flexible. You may even teach yourself the basics of programming along the way.
Start with Lightbot’s Hour of Code. This is just a series of increasingly-difficult puzzles using a little jumping guy and squares that light up. It teaches you how to not only tell him what to do, but it introduces the ideas of subroutines without ever needing to use language. It’s great for kids who don’t like text or for kids who don’t speak English that well. And everyone likes the puzzles, which get frustrating after awhile, so they have to turn to their neighbor (or you) for help.
Next, I go to studio.code.org. For 4th graders, I start with Course 2 or 3. Course 3 moves smartly along, and they have to work pretty hard to catch up, but it does start right at the beginning, without a lot of repetition. If a child has learning disabilities, start with Course 2, which has more repetition — it’s still pretty interesting and fun, and they’ll improve faster than you’d think.
I run all the way through the course. It takes awhile, but by the end, they’re pretty good at knowing how the structure of code works.
After that, we move on to Scratch (you’ll need to set up accounts for the students so they can keep and share their stuff). This is more flexible and a little different than Blockly, but it’s really fun, and the kids get into it. I have a few rules for the first project:
- No making your own sprites. This stops the kids from getting distracted by coloring and keeps them on track with the coding thing.
- They have to make an animation where one character moves through a scene, then the scene changes and the character encounters a new character. That’s it. But it teaches them to change scenes, it teaches them to use the “Broadcast” block (which is how you control showing, hiding, and a host of other “triggered” actions), and it teaches them to think about storyline. Chances are, once they’ve gotten that far, they’re invested, and will explore things in an attempt to further the narrative.
- At this point, I show them how to make things interactive with the user, too. How cool to be able to control the narrative from outside!
When we’ve done Scratch for awhile (and I usually use summer break as the break to move on to other things), we come back to school and start learning Javascript on Khan Academy’s Intro to JS: Drawing and Animation. This is an imperfect program and some kids get irritated with it, especially as it doesn’t give them much chance to be creative. But it’s a very good learning tool, and I ask them to carry on with it for awhile. It gets better once you hit the “animation” section, but you need the previous sections just to get you typing code. When they really need a break, I show them Processing (you’ll need to download the Processing environment onto your machines first).
Once you’ve got Processing on your machine(s), funprogramming.org is a great place where some kind soul has set up a series of video tutorials on how to do cool graphics and animations with the simplest possible code. It’s pretty similar to Khan (which uses a Processing library for its Javascript), so that gives them a chance to sort of get a grip on the differences between a library and an actual programming environment. But best of all, it’s super easy to fool around and try stuff out in Processing, with the minimum necessary experience, especially thanks to the step-by step tutorials in Fun Programming.
Note: I am still torn about whether going with Khan first or Processing first works best. I think the biggest reason I have them do Khan first is that with 12 kids in a group, it’s hard to teach them Processing by running them through it step by step. If you do it this way around, then they’ll have the basics when they come into the more squishy blank-page environment of Processing. But if you are only teaching one or two kids at a go, I’d work on Processing first.
While they’re doing Processing, you can make little suggestions for ways to change things and fool around — and these cool new ways will spread among the kids like wildfire, inspiring a whole bunch of crazy innovation.
Good luck!