How to teach kids programming and computer science is much more than learning to code. Most people will quit. Here are some ideas and links to help answer this question.
In the past year I have published this magazine, my first year doing so, the most common question people have asked is, “Where do I (or my child) begin to learn to code?” Or “How do I teach kids programming and computer science?”
My answer is some variation on, “It depends.”
It depends on whether you're a child or adult, a parent or a teacher. It also depends because learning to code is not the answer. Learning how to be comfortable with technology, learning how technology works, learning how technology can help and hurt us individually and as a society, these are the answers to the question, “Where do I begin to learn to code?”
Writing and publishing this magazine has taught me the vast majority of people who start coding will quit. They'll get bored. Or coding is too hard. Or coding doesn't really fit how they do things. For example, coding requires a lot of problem solving skills which, in turn, requires a balance of rigid step by step processes and intuition based on experience. Not everybody likes the combination.
From the start this magazine has published articles based on these guidelines developed by the Computer Science Teachers Association (CSTA):
- Basics of programming and where to learn more
- Problem solving and collaboration
- Mathematical foundations of computing and computer science
- Computational thinking
- Recognizing and selecting computer devices
- Community, global, and ethical impacts of technology
If you learn a lot about these topics, and you give up on coding, or you never learn to code, you'll understand how technology works and where technology is appropriate. If you do learn to code, terrific. However, learning to code is helpful but not required to be technology literate.
With all this as prologue, here are some specific answers to the question, “Where do I begin to learn to code?”
Kids (and Adults)
If your kids are under 8-10 years old, and especially if they have younger siblings, you might want to start with games and toys that teach programming concepts. For example, Robot Turtles is a great board game with some neat extensions like an online community where you can create your own game boards. These games sometimes let you replace the object you direct in the game with a person like your child, or a parent, adding another level of fun and engagement.
In the same style, the Move the Turtle phone application lets kids do basic programming. Kids and adults can give directions to move a turtle and make the turtle do things. Each step corresponds to programming activities where you specify an action then details about the action, for example, move (action) forward 50% of the way up screen (details about the action).
There’s also kid-oriented robots like KIBO, a robot developed at Tufts University geared to kids ages 4-7. KIBO is now on Kickstarter looking to mass market their technology.
Kids of almost any age also might appreciate the Computer Science Unplugged and computational thinking projects. Like board games, these projects teach computer science and programming concepts without computers.
If your kids are comfortable with games like Robot Turtles and CS Unplugged activities, then you might try next projects with a coding aspect.
Robots like Sphero make it easy to direct their cute little robot ball around a room then graduate to programming the robot. Computational thinking projects also have a few projects where basic programming in Python is useful for more advanced projects.
From a simple use of coding, kids also can gravitate to programming languages geared towards kids and education or languages like Python. For example, there is at least one ebook online on how to teach basic Python to kids. They learn not only a small bit of the language but, more importantly, they learn programming concepts.
Languages geared towards kids tend to use the Logo language, where kids enter basic directions and an avatar (often a turtle) follows the directions on screen, or they use a block language like Scratch, Alice, Tynker, and several others. These languages make it easy for kids to focus on what the language does and less on the specific syntax. In contrast, when adults use a programming language, syntax and structure are critical and what a bit of code does is slightly less important.
While parents might have mixed feelings about their kids being lost for hours in video games, some games can lead to programming. Minecraft can be put on the Raspberry Pi, a hand-sized computer designed to help kids get into hardware and software projects. Skyrim and other games make it somewhat easy for older kids to research then code modifications to make the game even more fun.
I’d also highly recommend you find local programming groups like Coder Dojo where kids and adults can work together on computing projects. It’s a structured way to relax and have fun with technology while engaging other people. Technology is a social activity, not strictly solo. You also learn more by sharing and debating.
And I would encourage parents and kids to look for online resources geared towards teachers who teach computer science and programming. Often there are resources like Minecraft for Education parents can use to get their kids started, or for kids to explore.
Bottomline, though, and this is true of any subject, it is important to start kids (and adults) at a place they find comfortable and provide them with tools to explore and find their own way. Programming and computer science can be fascinating and absorbing. But you have to discover it for yourself. A teacher or parent can't force you to be enthralled about a concept or making a computer do something.
What I have found interesting about publishing this magazine is how many teachers want to learn programming and computer science for themselves as much as their students. There is a lot of energy, fun, and ingenuity going on with teaching computer science and coding in the classroom. Even better, it is not a fad. Teachers get the connections between the math taught to kids for generations, for example, and how math is used in computing. Teachers also get the need for guidelines for online behavior, another critical skill if you want to be technology literate.
What applies to kids and adults also applies to teachers: there are many options out there to learn computer programming and computer science. It's important to be holistic, to not focus strictly on learning a job-related skill. It's more important for kids to have a well rounded view of technology, a love for gadgets and a healthy respect for how they work and how they might or might not fit into society.
While teachers might enjoy board games, and Robot Turtles might work great in kindergarten and first grade classrooms, the Computer Science Unplugged project has more projects geared towards the time constraints of a classroom, as well as the laser focus on one topic for each project.
If students graduate to programming, tools like Scratch, Alice, Tynker, Codea, Minecraft, and the like are great for having kids do projects within a single class period or over a period of time. There are many resources online to help distill these programming languages for education into projects kids can handle easily.
Finally, Skype in the classroom is a great example of technology teachers and kids can use to connect with other teachers and classrooms. You don’t learn programming, necessarily. But teachers and students do expand their horizons, learn a lot about the world, and engage people they would never meet otherwise.
It's Not About Coding
As I noted at the start, the biggest lesson learned in my first year publishing this magazine is that coding is not the answer. The answer is exposure to technology, computer science, and programming. Most people will never code. Yet they should learn enough about programming to realize their phones, tablets, computers, and other devices are not magical. They're tools created by other human beings like them. And, as with any tool, they have limitations and benefits. Tools can be extremely fun to use.
It’s also true groups charged with creating a programming and computer science curriculum treat programming as one aspect of the curriculum. While there is a lot of hype outside classrooms about how everyone must learn to code, people charged with creating a curriculum for students take a more holistic and broader view.
I want to thank you and all my readers and subscribers for a great first year publishing this magazine. I started Help Kids Code as a way to explore computer science and coding, and to meet then write about people doing really neat stuff with both. It’s been a fun ride. I look forward to the second year!
Move the Turtle
Programming Languages for Education
Skype in the classroom
How to Choose Your First Programming Language
Computer Science and Coding Groups
Computer Science Teachers Association (CSTA) Curriculum
UK GCE AS and A level computer science
To give Americans, in particular, a general idea how other countries teach programming and computer science.
Also In The June 2014 Issue
Codea is an app designed to make it easy to create games and software. Here are tutorials and links to online resources.
Here's a quick introduction to Raspberry Pi, how to find one, get set up, and then do all sorts of neat projects. With links for each step.
Summer is a great time to get outdoors, learn technology, and meet people in summer tech camps and local tech groups.
Github is an important tool used by programmers to manage their code projects. Here are Github tutorials with links to learn more.
It's fun and easy to create ASCII art with your computer keyboard, a text editor, and your imagination. Here are ideas to get started.
Alice teaches programming concepts as kids create animated movies with its friendly interface and storytelling.
Links from the bottom of all the June/July 2014 articles, collected in one place for you to print, share, or bookmark.
Interesting stories about computer science, software programming, and technology for the months of June/July 2014.
Mindstorms, Sphero, and Robot Turtles engage kids (and families) in playing while also teaching computer science and programming.
Computational thinking projects help you to solve problems in ways used to create software, as well as problems in real life.
These hands on projects teach computer science concepts without a computer. Plus links to many more projects.
Learn how to configure, install, and set up your own WordPress website.