Kids these days are "native" to the computing environment, or so we're told. What does that really mean? Sure, they grew up on computers, in a way that I never did - we had a computer at home when I was in middle school but at best it did word processing and one game. Well, and there was Atari. And we were one of the more progressive households - many people where I grew up hadn't seen a computer until we got to 7th grade in school, whereas we had one at home.

Now, most kids have access to computers from the get-go. They already know the basics of how to open programs, find things in the menus, figure things out. But that's really just the use of computers. It's lacking in one major thing - how to build on what they know. How to make new things. In one sense, this is a hardware thing, but I'm going to talk about software. In short: programming.

Programming. It's a scary word to many people. Run in fear, it's HARD. Well, actually, it's not. Programming, at its most basic level uses things you're already familiar with. An if-then statement? "If you don't eat your veggies, you won't get any dessert." A while statement? "While I was running, I listened to my iPod." See, it's really not that hard. What about *gasp* variables? We all* hated variables in algebra. Heaven forbid we have to deal with a variable. But you do every day, when you go to the grocery store. "I have $5. These candy bars cost $1.25 apiece. Therefore, I can buy... $1.25*x = $5, solve for x... x=4. Four candy bars. Well, then there's tax...so maybe just three." Maybe you don't think about it in terms of variables, but they're there all the time.

*well ok, not all of us hated variables.

So the question then is perhaps a more intriguing one: why do we not already have a million kids (and I'm not counting the script kiddies) who already know how to program? Go back to the "It's hard" statement. What if we could make it easier. That's just what some folks at MIT are doing with a programming language called [url=scratch.mit.edu]Scratch[/url].

Key points are:1) it's easy and intuitive - it's "drag and drop" programming2) kids were inventing collaborations/companies as young as 10 doing this, learning not just programming but cooperative work and learning to manage other people.3) kids are thrilled to learn the concept of "variable" and logically thinking through problems.4) programs are driven by student's interests - which keeps them interested5) girls are having fun programming

I've been playing around with it for the last hour and it's pretty neat. It's got all your basic programming already in it. You can upload or create your own "sprites" (images) and make them do things. It takes the part about remembering the syntax out, and leaves you free to think about "well, if I want my sprite to do this...how do I go about it?" You can add sound (premade or record your own).

In short, it plays to all the strengths that kids already have with computers, and brings them to the next level - learning how to make computers do fun things. It teaches them logical thinking, creative thinking, and plenty of math skills too. Plus, everything is open source and under the Creative Commons license, so it teaches them about sharing, and community building.

I'm considering using it to run a "programming for kids" thing at my local community center. Check it out!

That sounds really cool. I would've loved it if there was something like this growing up - I always had vaguely in the back of my mind that programming was the sort of thing I'd like to try out, but it was always wishful thinking. (And then I got to Uni ... and have to program to do coursework ... which has shown me that I don't like programming very much (or at least not when it counts for part of my grade), although it's quite neat when it works).

Yeah, I didn't much like programming in college either. I took one course and it was ok, but the next one was just...boring as all get-out. But I like the problem solving that goes with it (well maybe not the debugging part, but the part that's how do I do this, and how do I do it efficiently).