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.

Thursday, September 13, 2012

Will tablets replace PCs?

I just bet Professor Daniel Lemire $100 that they won't.

At least, any time soon. The specific terms of the bet are, "In some quarter of 2015, the unit sales of tablets will be at least twice the unit sales of traditional PCs, in the USA." Loser donates $100 USD to the charity of the winner's choice.

How did I get to this point? About a year and a half ago, I wrote a blog post for CACM, "Who needs a tablet?"

The purposely inflammatory title overstates the main point, which is that rather than replace PCs, people are mostly buying tablets in addition to their PC ([1] [2]).

Even so, predictions in the article have already proven wrong. Tablet sales did not "stall around the same level where netbook sales stalled". Netbook sales peaked and stalled around 40M units/year worldwide ([1] [2]). Tablet sales passed 60M units/year worldwide in 2011 and are projected to be twice that this year.

So, tablets show no sign of stalling where netbooks did, but they are still being bought in addition to, not in replacement of, PCs. While many are taking some of the time they would have spent on their PC and spending it on their mobile or tablet instead, they still own and spend time on a laptop or PC.

This bet doesn't quite say what I want to say. What I want to say is that PCs aren't going away any time soon. They definitely are not going away by the end of 2015. Eventually, yes, but the change is not going to happen in less than three years.

What the bet actually says is more about how fast people in the US will buy new tablets in 2015 compared to replacing PCs. Projections I've seen put PC unit sales in the US around 16M units/quarter and mostly flat through 2015, tablet unit sales currently at 7M/quarter in the US and growing rapidly (projections vary from 10-16M/quarter by 2016). Seems unlikely that the projections would be that far off, so I took the bet.

But the more interesting questions are:
  1. What will it take to get people to stop using PCs?
  2. Will the tablet market continue to be dominated by expensive devices (like the $600 iPad) or convert almost entirely to low priced tablets (currently $200 with the Nexus 7 and Kindle Fire, but probably soon around $100)?
  3. Will anything coming in the next five years, including tablets, get people to stop buying and using PCs entirely? Or will people continue to buy and use multiple computing devices?
I've said what I think (breakthroughs in input/output, almost all $100 tablets, no). What do you think?