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.

About these ads

10 Responses to “Kids Can Code”

  1. DFischer December 5, 2012 at 2:19 pm #

    Kids definitely can code. We recently did http://www.kidscodecamp.com which included Scratch and http://www.kidsruby.com – Completely free and open source. Even the camp itself.

    • natbro December 5, 2012 at 2:49 pm #

      Thanks for the pointer about kidscodecamp! I would love to help run one in Seattle this winter or spring — we’ve got eager coders. Cool.

  2. Peter Schmidt (@pnschmidt) December 5, 2012 at 7:34 pm #

    Great piece! There’s a lot of work going on in neuroscience that is addresses the “creating vs consuming” issue. The issue is commonly framed in a different way: passive vs active learning. (Even watching a movie is learning: you learn the plot, you might infer patterns of plots, you might identify the optimal place to put your juice box so it doesn’t get kicked over by your sister….) The most interesting thing to me is the issue of self-directed versus other-directed activities. Kids develop executive function the more their activities are self-directed, especially if they are self-directed, goal oriented activities. You look for fewer rules, more choices. This is the problem with games like Super Mario Brothers — there are many rules and few choices, and most problems have only one solution, and it’s also why the “helicopter parents” are hurting their children’s development. Programming is, by this standard, the cream of the crop of activities: it is a goal oriented activity done in a environment with a set context but few set rules. For my kids, most of their education is terrible by this standard: the curriculum is designed around passing the FCAT (thanks, GWB, for “no child left behind”), and so most of their education is “my way or the highway” instruction. There’s little difference between a multiple choice test and Super Mario Brothers, especially because kids quickly learn how to “game” the test — the longest answer is usually the right one, etc. Programming offers a “vacant lot” for the current generation of kids: a blank slate to make of it what you will.

  3. auroralxylon February 13, 2013 at 8:20 am #

    I totally agree, kids can definitely code. I self-taught myself C++ when I was 10.

  4. Raj February 13, 2013 at 10:03 am #

    Great post, and resources, thank you for sharing. Another thing I noticed is that the interest to learn programming starts to tilt towards boys more than girls around middle school. My daughter is 12 and she is already indicating that…. and she does not like to take computer classes where 99% of all the students are boys.

    Im trying to teach her myself with BASIC – and found this app on the iPad that lets her type a few simple programs, and also with MS Excel. The next step, if this works, is to open it up for my neighborhood and get a few more kids of her age involved as they do learn collaboratively much better.

    Thank you again, and I will try out some of the resources you have mentioned. This is going to be a big issue going forward and I want to make sure I do my bit as a father.

    • natbro February 13, 2013 at 12:42 pm #

      thanks for reading it, and I hope it helps!
      I have been helping out some friends with a new site called http://code.org. The current site is pretty bare, but the updated site with some cool video interviews will be arriving in a few weeks. I hope you can check it out and hopefully it will have even more resources to share with your kids as well as schools, summer-camps, and other programs.

  5. Stephen Coy February 13, 2013 at 3:56 pm #

    Also check out Kodu at http://www.KoduGameLab.com (I’m on of the devs). Kodu is a full 3d game development environment built around a bespoke visual programming language.

    • natbro February 13, 2013 at 5:15 pm #

      thanks, good link. I hope you also submit this to a site I’m working with, http://code.org in a few weeks when we are out of beta and accepting submissions for more tools and programs that are appropriate for kids.

      • Stephen Coy February 13, 2013 at 5:18 pm #

        Thanks for the link. Looks like Kodu is already on the list.

  6. Top Gun February 13, 2013 at 6:29 pm #

    Blender is definitely a good program. And you are right about the consuming and creating with technology

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 71 other followers

%d bloggers like this: