Programming for Today’s Kids: Why NXT-G, Kodu, Scratch, Alice, Small Basic, KPL / Phrogram and others can reignite the imagination and understanding of technology for today’s kids.

As Kids growing up in the 70s and 80s, we did not have all the technical resources available to us as they do today.  Computers were rare, under-powered, and very difficult to use. Hand-held calculators weren’t even widely available, no public Internet, 3 TV channels, etc., etc.

What we did have was an accessible programming language that came with most computers: BASIC.  In fact, there wasn’t even much software that you could buy for your computer.  You had to write your own, and the language and environment was built-in to the machine.  A little later came LOGO, and even later came HyperCard for the Macintosh.  So for a kid with access to a computer, and a little interest, motivation, and summer break, you could spend hours programming and creating basic games with text, graphics and even sound.

Ironically, with all the advances in 30 years we have largely lost the entry-level development environment that kids can experiment and get started with.  Sure there are free tools for .NET, Java, PHP, etc. but they start at a much higher level and have so many commands and options that it is easy to get confused.  What kids need is a “level 0” or “level 1” type environment that is limited but easy to use (and did I mention fun?).

Not every kid needs to learn to write complex programs.  But a generation of kids growing up without even a basic knowledge of how computer programs are written make them unaware of how things work and end up victims or slaves of the very technology that is meant to help them.

So for the last 4-5 years I’ve been on an active search for current options for kids who are even mildly interested in programming.  They need to be risk-free (i.e. kids can play around with them without damaging anything), fun (no kid-assembly language primers here), and have the ability to scale to average homes.

I have made no conclusions here, but I wanted to list the environments I am using and “tracking” currently.  We started the “Bots on the Rock” robotics club in January 2008 and that has been doing well with kids 8-15.  In just the last month I started using Kodu on the XBox 360 at home, and now on the PC with the idea of using that with the club as well.  I am going to do a quick listing of what’s available, with more details to follow.

Kodu: Game Programming Lab (XBox 360, PC (in Beta)) – 400 XBox “points”

kodu

The latest item on my list is Kodu: Game Programming Lab from Microsoft Research.  I put it first mainly because that is what I’ve been “talking” about on Twitter/Facebook which lead to this post (i.e. can’t explain all of this in 140 characters). Kodu is available today for the XBox 360 and and Academic version is in beta test for the PC for release in the near future.  As of today I have the PC version running on my laptop and I will be working with that more over the weekend.  We’ve been using the XBox 360 version for just under a month, and all of my kids really love playing with it and are making their own games – in fact they’d rather “play” Kodu than many of the other “real” games.

Kodu is difficult to explain in words, and really needs to be demoed – here is one of the better YouTube videos out there.

Basically all of the programming is done with an XBox controller (even on the PC) with a very intuitive series of “sensors” and “commands” (e.g. when I see a ball go towards it).  It also controls a very robust scene generator which enables a huge variety of terrains and elements to be included in the games.

The recent update of Kodu on the XBox 360 allows for much easier sharing of games that you have created.  You can even create multiplayer (local) games, and quickly learn about the headaches that come from multiplayer games on the same screen.

There are a whole series of posts that could be written just about this environment, but for now I’ll leave you with the links.

 

NXT-G: Lego Mindstorms (PC, Mac) – Included with LEGO Mindstorms Kit ($275)

nxt-g

NXT-G is the graphical programming environment that comes with the LEGO Mindstorms Robotics kits.  The environment is a “click and drag” programming surface where programs are created by stacking and ordering blocks on the screen (much like building LEGO buildings, hmmm).  Blocks are called “Move”, “Loop”, and have sensor blocks that correspond to the robotic sensors in the kit (e.g. touch sensor, ultrasonic (distance) sensor, sound, light, and now color in the 2.0 kit).  The NXT-G application is actually an implementation of National Instruments LabVIEW graphical programming software which is used professionally by engineers and scientists.  In fact, you can use LabVIEW to do some advanced things with the robots that NXT-G will not handle.

The Education version of the NXT-G kit is now up to version 2.0 and contains separate modules for doing data logging and support new sensors like the temperature sensors.  In addition third party sensors can be added for specific needs – for example we added Compass and IRSeeker sensors from HiTechnic when we were doing our series with the robotics club on LEGO Soccer (i.e. needed to “find the ball” (bright IR source) and know “which way” was the opponent’s goal).

Dragging and dropping controls is quite easy for most students – in fact the biggest challenge continues to be slowing kids down and having them try to think through and plan out a solution instead of just barreling right into programming.  Probably an ongoing struggle for many programmers out there.

 

Small Basic (PC) – Free

smallbasic

Small Basic came out of Microsoft’s DevLabs as a simple programming language for kids to get started with.  It is unique among many of the rest in that it allows for the direct entering of programming code, whereas most of the others have gone to a graphical programming language.  It also preserves a lot of the BASIC syntax (15 keywords) so it will be comfortable for many adults that are assisting and mentoring kids who are starting to program.  It also means that the age range probably scoots up a few to perhaps 10-16.

The power of Small Basic comes in it’s simplicity (look at the tool bar compared to Visual Studio, Eclipse, or any other professional tool set).  There is only so much you can do and experimentation is easy to get into and execute.  Another part of the power comes from the .NET Framework.  There are many libraries included (Flickr one is shown) and others are being developed.  If there is something you want your Small Basic program to do, that it doesn’t to right now, develop a Class in your favorite .NET language and Small Basic will be able to access the functionality.

 

Scratch (PC, Mac) – Free

scratch

Scratch has been developed by the Lifelong Kindergarten Group at the MIT Media Lab as programming language for kids 8 and up.

Like Kodu, this is better demoed than described (pardon the music and volume level, but the later content is very helpful).

Many educators using it with a lot of materials freely available and ready to go.  With the backing of the Media Lab and some key educators (and as it is free) this is a platform that is growing in general adoption and use.  It is probably also in the 10-16 year age range and has many key features.

One of the other programs, besides BASIC, that I really miss is “Storybook Weaver” which enabled students to write stories with animated and multimedia features included.  Scratch, and next Alice, offer a lot in the way of storytelling in addition to programming.

 

Alice (PC, Mac – Java) – Free

alice

Alice is unique programming environment out of Carnegie Mellon in that allows creation and manipulation of custom 3D characters and objects – which is really cool.  Creating 3D objects is hard but not impossible, and better tools are coming out all the time.  There are freely available 3D models that are being created by the community for use by others in Alice.

I have not used Alice, but that is only because of a lack of time and resources and not because of any other reason.  Here’s a video promoting Alice and showing many of its features.

Like Scratch there is a nice storytelling component in Alice which is currently called “Storytelling Alice” (soon to be “Looking Glass”).  So whereas the Alice 2.0/3.0 environments themselves are better suited for a formal class in programming, a more informal and easy-to-use version for storytelling (and basic programming) is available.

Now strongly allied with Java, Alice is extensible via Java which makes many other possibilities available for more advanced porgrammers.

 

KPL / Phrogram (PC) – $35-$50 + more for additional libraries

Lastly, to be complete in this list I wanted to include the Kids Programming Language (KPL) which has been retired, but has resurfaced as Phrogram.  The KPL effort was intended to create a simple programming language for kids that would allow for rich graphics capabilities and be extensible using the .NET Framework.  Admittedly I have not used or tried using the product since it became Phrogram, so I can’t make any recommendations.  On the surface it appears that the communities surrounding the other products are more active and current.

 

In Conclusion – there are no Conclusions

I am glad that the market for kids programming environments is heating up and that there may actually be competition instead of a big giant hole.  I am actively using NXT-G on a regular basis and am really starting to like Kodu (more each time I use it).  In considering a class or even formal curriculum for “next steps” I am watching Small Basic, Scratch, and Alice and expect to be using one or more of these in 2010.