A wonderfully different way to thing about computing

One Laptop Per Child logo
One of my constant struggles as an educator in computer science has been helping students see a bigger picture, look past the mundanities of yesterday’s “help wanted” page, and see what the world could be rather than what it has been.

One way this has often played out has been in debates over programming languages and development tools. Students are (quite legitimately) concerned with their near term employment prospects, and so they tend to focus what they’ve heard of, and what they see in the job web sites. Unfortunately that is almost always an exercise in looking backwards in time. When I started in 1991, the problem was getting students out of Pascal and C and start thinking about objects. Now we’re working to add things like Ruby and Python to our Java-heavy toolkit. Constant throughout has been the difficult task of getting them to take (semi-) functional languages (Scheme, Haskell) seriously or, in fact, any language doesn’t have a “For dummies” book at their local mega-bookshop.

I need to be fair, though, and make it clear that we’ve always had students who could see the bigger picture, and have often pushed us faculty to open some important new doors. I suspect that we’ve actually been luckier in that respect at UMM than many other programs. That said, you still get groaners (often very vocal) who never seem to be happy unless you’re emphasizing whatever tool or language they’re firmly convinced is their only road to employment.

This is one of the reasons that it makes me so happy to see the list of programming languages used in the One Laptop Per Child project:

We will support five programming environments on the laptop: (1) Python, from which we have built our user interface and our activity model; (2) Javascript for browser-based scripting; (3) Csound, a programmable music and audio environment; (4) Squeak, a version of Smalltalk embedded into a media-rich authoring environment; and (5) Logo. We will also provide some support for Java and Flash.

OK, we can debate the details (and I’m sure people have and will), but let’s skip all that shall we? Let’s instead note that none of these was a “heavy hitter” 5 or 10 years ago, and there are plenty of people who would (wrongly in my opinion) argue that none are terribly important today. How many data structures classes in the U.S., for example, (a key “bread and butter” course in most computing curriculums) use any of these languages? I’m sure there are a few (especially Python), but proportionally I bet it’s pretty tiny. (Try searching either Amazon or the web for textbooks for such a course, for example.)

It’s also worth considering impact here. Sure, I doubt that anyone’s likely to start building inventory control systems in Logo, but should that be the issue? What’s the real opportunity for impact here? How do I change the world? By building accounting systems? Or by contributing to a project that plans to put computers and software in the hands to millions of kids all around the world?

You want to make the world a better place? You want to really fight terrorism? Then give people hope, a chance to grow and make their world better. Give them something to protect. Contribute to a project like this.

And, if you’re contributing to this project, you apparently program in Python, JavaScript, CSound, Squeak and Logo.

So let’s put an end to the whining about these not being “real” programming languages and nobody building “real” programs with them. I’ve written a crapload of Java code in my day that only a handful of people will ever use. Some bright bulbs used Squeak to build Scratch, which I suspect will be used by millions. Hmmm … which do I find more impressive?

Related posts

Cool toys for a good cause!

XO laptop

I doubt this will be news to many, but it’s a really cool idea and worth the plug. The One Laptop Per Child program is making that crucial leap from great concept to spiffy, shipping technology. These are designed to be used by groups of kids in the developing world, but the project’s viziers had the clever idea of allowing folks in the U.S. and Canada to buy one of these first units under their Give One Get One program. You pay $400, and $200 goes to sending you a wondrous new XO laptop, while the other $200 is a tax deductible donation that puts one of these gems in the hand of a child in the developing world. This is only for a limited time, however: November 12 and November 26

As Michael Tiemann points out, however, if you’re gonna get one, you really should consider getting two. These things are designed to form little ad hoc wireless networks whenever they’re near other XO laptops, and lots of the software assumes the existence of other XO laptops more than it assumes access to the full force of the internet (which so much traditional software now assumes). So you, your kids, and whoever you’re showing off your new toy to will be much more impressed if you have two of them to play with.

I’ve had some people ask if we were planning to buy one. Unfortunately (a) we can’t buy one from the UK in a straight-forward way and (b) we’re pretty tight for cash with partial salary and the damn exchange rate. So the answer is no, for now, but not for lack of wanting to. My guess, however, is that this short window of opportunity is a nice marketing scheme to bring in some cash fast, and that down the road they’ll open things up more broadly on a similar scheme. And why not? It raises their profile, and the “Give one, get one” scheme puts more in the hands of the target group of kids.

Cleverly, KK has proposed that UMM’s CSci discipline buy four of them for students and faculty to do projects on. I think that’s a great idea for a lot of reasons, only one of which is that there will be some waiting for me to play with when we get home :-).

Related posts