Wednesday, June 21, 2006

Get 'em early

The earlier we show our daughters how to program, the less chance they'll start thinking, "I can't do that."

In that spirit, I've collected some links to programming environments that kids can learn in, and books good for older kids and parents.

  • Squeak - a media authoring tool based on Smalltalk. Educators use it to create interactive simulations as well as to teach programming to kids. There's even a book available, which is unusual.

  • Gamemaker - a drag and drop game creator that also has its own scripting language for more complex behavior.

  • Scratch - a Squeak derivative from MIT and UCLA. Looks like it will be released later this year.

  • Alice - for middle school and up, this project from Carnegie Mellon teaches programming with 3D modeling. Evidently "The Sims" creator EA is funding development of the next version. Perhaps they hope to have more kids create their own in-game objects. I probably shouldn't contemplate whether or not that's a good idea!

  • Logo - the classic simulation environment with turtles and squares. Now sporting several nifty new implementations, including one that's open source. Logo has been around long enough that there are several books out there; MIT publishes one.

  • Guido van Robot - open-source simplified programming language that is less designed to let you have fun, and more designed to teach actual programming concepts. As such, is probably best for older kids.

  • RUR-PLE - a relatively new python environment for learning to program. This looks like younger kids might like it.


I also found references to a couple of good books for kids that aren't tied to a particular environment:

  • Learn to Program, by Chris Pine, from the Pragmatic Programming folks. It's just a book, not an environment, so it's probably better for older kids who can deal with finding and opening files and so forth. It uses hot-language-of-the-moment Ruby.

  • Head First HTML by Elisabeth and Eric Freeman, from O'Reilly. Great if you have an older child who wants to learn how to make webpages. Remember, good parents don't let their kids use Frontpage!

Friday, May 19, 2006

Programming's Image Problem

It's not about math.

The vast majority of programming jobs these days have nothing at all to do with algorithms. I have never, in eight years of professional programming, implemented my own data structure outside of an interview.

That doesn't mean what I do is mindless. Programming these days is looking at a problem, surveying a vast toolset, and selecting the right tools to solve the problem in the right way. It's easy to do badly and incredibly difficult to do well. You have to know how all the tools work and how they work together, be familiar with their drawbacks, limitations, and bugs (both documented and non-), and know when it's the right time to use each one.

Then you write some glue code, work around some new undocumented bugs, cast the bones a few times and you have a working system. This is what most people with four year CS degrees do all day.

Yet if you're good at math in high school, they suggest computer science. Computer science undergrad programs, in general, are heavy on the calculus. We're selecting for the wrong traits here, and in the process I think we're scaring away a lot of women.

If instead we looked for organization and pattern-recognition skills in high school and encouraged those folks to look at programming, I wonder if we'd see a shift in the gender balance.

European study: CS dropout rates tied to national culture

Evidently, dropout rates for women in CS are influenced more by the national culture than by any particular personality profile. In other words, women don't drop out because of some inability inherent to all women; the culture around them is a more important factor.

This is a European study, and the US, with its myriad subcultures, resembles Europe in many ways. It'd be interesting to see a US study that looked at similar issues.

Read the study yourself. It's got lots of other good stuff, too.