Friday, September 28, 2012

Code Monster and teaching programming to kids

I recently launched Code Monster from Crunchzilla. It helps parents teach a little programming to their kids.

A lot of parents want their kids to learn a little about programming. But, if you are a parent, there seem to be only two choices out there, either have your kids slog through all the syntax and pain of tutorials and textbooks made for adults, or have them learn a visual programming language made for kids that can't be used for anything else.

Code Monster teaches Javascript, which is a useful and valuable programming language to know. When learning using Code Monster, the code is live, so changes kids make have impact immediately. They learn a bit about how to program, starting with early concepts like parameters, variables, and loops, moving through functions, eventually introducing some of the wonders of fractals, animation, and physics. Code Monster encourages experimentation. It makes programming fun.

Code Monster is an unusual blend of a tutorial and a game. It is not a tutorial or a lesson plan, but it does walk kids through many experiments with a real, useful programming language. It is not a game, but many of the children who have playtested it have found it fun, addictive, and exciting.

If you're a geek like me, there are some techie aspects of Code Monster you may find interesting. For example, Code Monster uses live code so kids see the immediate impact from code changes, no hitting a run or compile button. Code Monster provides useful help messages if the player stops working on the code but has an error. There are several nice but subtle features -- like preventing most accidental infinite loops -- that are harder to do than you might think (if you think you know how to do that in Javascript, try it, I bet your solution doesn't work). It only needs an internet connection when you first go to Code Monster (allowing working on lessons offline) and keeps your progress without saving anything remotely (privacy is important). The lessons eventually introduce quite sophisticated topics -- like fractals, L-grammars, animation, and physics -- that are very fun for kids but not normally taught to beginning programmers. But all of that tech stuff only matters because it makes Code Monster do the right thing; the important thing is that Code Monster fun and enjoyable to use.

Code Monster came out of my interest in online education, especially math and computer science education. I am convinced that, when this generation of children grows up, algorithmic thinking, large scale data analysis, and programming will be a major force multiplier for people working in many fields. People who have these tools will have the power to find breakthroughs in medicine, biology, economics, and many other areas; these tools will let them do things no others have done. I hope Code Monster can be a small piece of many more girls and boys becoming interested in computational thinking.

Please try Code Monster. It's free and it's fun. If you have kids (especially ages 9-14) , please have them try it. If you know people who have kids (or adults who are young at heart and might want to dabble in programming), please tell them about it (and share on Facebook, Google+, and Twitter too). I'd love to get the word out about it, and it's all for a good cause, it's teaching kids to program. Finally, if you have any suggestions or find it useful for your kids, please post a comment here or e-mail me at, I'd enjoy knowing how you like it and how I can make it better.


JM said...

Good stuff; trying it on my 10 & 12y olds.

My 12y old has been wanting to do programming for a while now. The main issue he running into, is about expectations. He is so immersed into computing that he immediately wants to build games or complicated web sites. So when he goes through programming tutorials he gets bored, because learning how

This was much easier when I started, because simply being able to make the console print Hello World was an achievement.

Interestingly, he has caught on Lua scripting for minecraft; because the programming there helps him do the kind of stuff he wants and the environment he's manipulating has much higher level primitives and objects.

Carlos said...

Great idea!
I agree it's hard to find resources like this, but it's even harder to find then in languages other than English. Since this platform is targeted to young kids, this could be a problem for non English-speaking children.
Have you guys thought about porting it into different languages? I would be happy to help with the Spanish version :-)

Greg Linden said...

Thanks, JM! Curious what you are using for Lua scripting for Minecraft? Luacraft? Or something else?

Greg Linden said...

Thanks, Carlos! There's been two requests so far to do a Spanish language version, one for French, and one for a German version. Definitely on the idea list, thanks for the suggestion!

Rama Ramakrishnan said...

Novel and noble idea! I will try it on my 11-year-old daughter.

>> adults who are young at heart and might want to dabble in programming <<

I think this is a big market segment as well. A number of my MBA friends appear to have a "dormant geek" inside that would likely love this sort of offering.

Stan Brager said...

Is there a way to reset the Code Monster or establish a way for more than one child can use the same computer? Perhaps an identifier?



Greg Linden said...

Hi, Stan. Short answer is that the way to reset Code Monster is to hit the Back button a bunch of times.

Longer answer is that there is a privacy issue here that Code Monster is trying to walk. Code Monster doesn't require any login, so it has no idea who the kids are, and it does that on purpose to maintain privacy. It still is able to keep track of what lesson people are on and is still really easy for one person to use (even easier than having a login, actually), but the cost of no login is that it's harder to have multiple users.

A few teachers at schools have asked about ways to support multiple people in their computer labs. And a couple parents have mentioned that they want to have more than one child use Code Monster.

Right now, the only real choice is to click forward and back in the lessons or use multiple computers or web browsers, which isn't that bad. Other ideas have been tossed around like a feature that allows people to jump to lessons or special URLs that jump to lessons or reset, but all of those add user interface complexity and possible confusion when just clicking a lot or using multiple browsers is pretty easy, so they weren't added.

If you have further thoughts on this or any other suggestions, please feel free to write me directly ( or post additional comments here. Thanks, Stan, and hope your kids are enjoying Code Monster!

Adam Monty said...

Great stuff here Greg! Just spent an hour or so with my 8 year old daughter and she loved it!

Greg Linden said...

Stan, I wanted to let you know that a new feature just launched that lets you jump lessons. It was a frequently requested feature, especially from teachers.

You can find it at the bottom of the page, where there are a collection of links "How to Play | Lesson Sections | About ..." Clicking "Lesson Sections" brings up a way to jump anywhere, which is what you wanted for your kids, and what many teachers have wanted for their classrooms.

It also lets people sample how much content is there. There's about 400 lessons, about a textbook's worth of material, including some very cool, very short pieces of Javascript that do fractals, animation, and simple games. Lots of fun things to play with!