Tag Archives: kids

Kids Can Code

5 Dec

I have a 12-year-old son and an 8-year-old daughter, and like most parents I want them to grow up to be great people, to be great readers, to be great at Math and Science, and to have hobbies that they enjoy.  As a life-long programmer, I also want them to be great at programming and in general great at creating things, at making. I don’t want them to be mindless consumers.

As a techie, I’m often drawn into conversations with parents, teachers, and friends about young kids learning to program and about “screen time.” Here is my current thinking. I may update it with new links and ideas from time to time. I hope it helps you in some small way as your raise your creative little makers.

Screen Time: Creating vs. Consuming

One important idea I like to plant in parents’ heads about using computers is to make sure that when they worry about kids “having too much screen time” that they are making the distinction between when their kids are “creating” and when they are “consuming” using computers, smartphones, tablets, even televisions. A lot of parents are given the advice to limit screen time to “15m per day” or “only on weekends.” I strongly agree with putting limits on consumption — playing games, watching entertainment videos on a TV or on YouTube, playing video games — these should all definitely be limited in a manner that is appropriate to your family. (In my family, we mostly read — we don’t watch TV, we play some xBox+Kinect and iPad games on weekends, and we will often have Friday or Saturday “movie night” with popcorn — we’re not much into screens for consumption. YMMV.) I do think it is worth knowing that video games and television are very much designed to tap into addictive behaviors when you think about your own family rules.

But… putting limits on how much time kids spend creating things using computers is something I strongly discourage. This is like saying to a child that likes to draw that they can only do it 15m per day, and you won’t buy them any pastels or paints. Or telling a child that loves to read and write that they can only do it on weekends. How about a kid who is really into baseball or dance — would you insist that they can’t join the team or company because practice is 3 evenings per week? We don’t do this with art, math, or sports — why would you do it with creative things on computers? There is simply a huge difference between time spent creating or making and time spent consuming. Let your kids learn by creating and making using these incredible tools.

Consider also that most adults in our society spend their entire workday in front of a computer, making things — creating or adding to spreadsheets, writing email, writing memos, analyzing, synthesizing and summarizing content from different sources — using computers as a tool to draw conclusions or to design and build real and virtual things. Working at computers to create new things from old things, to write, to draw, to program and engineer — these are the real-world skills that kids are going to need. So it makes sense to really allow much more open-ended and unlimited “creative” time for kids at computers. Drawing programs, writing programs, quality educational programs masquerading as games (like rosetta stone language learning, or a few good educational games), programming, video-editing, making slideshows with family photos — all of these are great creative things that you should think about in the same way you think about making sure your kids learn to play basketball, soccer, learn piano, enjoy art, singing, etc.

In my house, the open-ended creative tools we let our kids use any time we would also let them draw, read, play with toys, or play music (meaning whenever they don’t have other school work, practice commitments or chores, and have gotten some physical activity into their body) include:

  • making slideshows in iPhoto or movies in iMovie or FinalCut Pro using family photos/videos or photos/videos that they have shot on their own. (giving kids their own inexpensive digital cameras is a great holiday or birthday gift, by the way!)
  • making stop-motion videos using the computer’s webcam and clay or other arts-and-crafts items. We use iStopMotion (http://www.iStopMotion.com) and a few others.
  • painting/drawing programs of all kinds. We use Pixelmator (http://www.pixelmator.com) and various iPad apps.
  • writing programs to write stories or letters
  • creating 3D models and animations using Blender (http://blender.org)
  • Programming tools, see below:

Kids Can Code

There are also absolutely some great tools for kids to use to learn real computer programming. Sadly at this point none of them are a curriculum that takes young kids from introductory concepts up through complex programming in a compelling results-oriented way, so you have to stitch things together yourself until kids get to the age when high-school “computer science” classes or clubs kick in, or until they are so self-motivated that they can draw on the innumerable free resources on the internet. Below is a little list with some details and recommendations. My son who is now 12 1/2 has used most of these and started with Scratch from about the age of 5, and is now building iPhone/iPad applications using StencylWorks and XCode. My daughter who is 9 has tried many of these but programming hasn’t yet piqued her interest (I’m working hard on it!).

Scratch (http://scratch.mit.edu/). Scratch is probably the best introductory tool for young kids because it is visual (you drag and drop “blocks” of code around to make your programs work), because it is easy for kids to create graphical things like what they see around the web, and because it has a huge community of kids who share their projects on an associated (kid-safe) web-site. Every Scratch project you find on the site you can download, take apart, and see how it works, change it, etc. This tool has such a big community that it is actually the closest approximation to how real programmers work in the real world — we mostly learn by example and using things other people have built before us. We share code-snippets, we share open-source projects on GitHub and other sites, and we offer advice in forums, IRC, and on StackOverflow.

CargoBot (http://twolivesleft.com/CargoBot/) for iPad, RoboLogic (http://www.digitalsirup.com/apps/app_robologic.html) for iPhone and iPad, and MoveTheTurtle (http://www.movetheturtle.com/) are three “games” which are actually very much about learning how to program and how to think logically to accomplish tasks. Some kids who want to learn how to make their own games don’t really like these, because they are too “simple”. For kids that you want to introduce to programming or give a hint that by playing these they are taking steps to learning programming, these are a great choice and they are also fun to play together with very young kids.

CargoBot was written entirely on an iPad using a tool called Codea (http://twolivesleft.com/Codea). I don’t yet have any first-hand experience with Codea and my kids haven’t used it, so I can’t recommend it, but I might add more detail about it to this list in the future.

CrunchZilla’s CodeMonster and CodeMaven (http://www.crunchzilla.com/). These were written by a local Seattle dad, Greg Linden (https://twitter.com/greglinden), a friend of mine who has kids about my kids’ ages – he has also noticed a lack of learning tools for young kids. These are simpler forms of the tutorials listed below for Khan Academy and Codecademy. I would definitely suggest CodeMonster for young kids. With this and CodeMaven they are actually learning JavaScript, but they are doing so in a very interactive and step-by-step fashion which I find less clunky than Khan and Codecademy..

Khan Academy (http://www.khanacademy.org/cs). Khan has some computer-science tutorials involving a simple programming language called JavaScript (no relation to Java) which focus on drawing and which are the most approachable for young kids. These are pretty fun and introductory. I would recommend these for kids who really like the programming aspects of Scratch (the for…each or while… loops, or the variables, etc). Very few of the kids younger than 9 that I have worked with really understand what they are supposed to do at each step of these these lessons because they are geared towards adults who understand complex page layout and following a complicated set of instructions, but it’s worth trying for any kid who is looking for more than Scratch.

Codecademy (http://www.codecademy.com/). These guys have tutorials about JavaScript as well as several other programming languages. These tutorials are geared more towards adults and they have a lot of user-interface “friction” that young kids without a lot of web browsing experience won’t really understand. Once kids are pretty experienced using computers and have used things like Scratch to download and upload their own projects, they will be more equipped to use Codecademy. Until my sone was about 11 I didn’t think he would find any value in these, but now he is very equipped to use them and finds them useful. He and I both notice that they are just pure lessons — they don’t tend to lead you through learning an entire project like you can do in Scratch or Stencyl, and so the rewards are somewhat weak for kids looking to really do something.

Stencyl (http://www.stencyl.com/). This is a pretty complicated tool that very experienced Scratch users can figure out with the help of an adult. You can use Stencyl to create your own web-site “flash” games and to make games on iPhone/iPad and Android devices, and for this reason it is very compelling for kids who want to create things that they can actually share with their friends. My son recently started actively using Stencyl, and it took him and me a little while to figure out the tool. The tool assumes a great deal of user-interface experience, uses games terminology without much background, and the tutorials are not the right pace or depth. That said, it is the easiest-to-approach tool for kids looking to build iPhone games right now.