Teaching kids to program.

Those that know me know I have a soon to be 12 year old son, for the last few years we have put him into various summer programs like this one from Cybercamps (http://www.cybercamps.com/) in these programs he has had chances to learn bits and pieces of Photo Shop Elements, Macromedia Flash, Robotics, rudimentary game design and some very basic programming.

 

One of the programs he was involved in taught him how to use something called FPS Creator (http://www.fpscreator.com/) this is a development environment where you get to manipulate many pre-rendered objects to create your own games; he really loves the thing but he always wants to share his games with his friends and it produces very resource intensive games that wont work well on most of his friends computers (IF they even have computers).

 

He has indicated what he really wants to do is get these games to work on the XBOX 360, and he heard about XNA Game Studio Express (http://msdn2.microsoft.com/en-us/xna/default.aspx) and got very excited.

 

This unfortunately raises a interesting problem, how do you teach a kid how to really program? C# is a relativly simple language if you want to do basic things and from what I can tell XNA Game Studio Express does most of the heavy lifting so I think its plausible a motivated kid with the right resources could do this if properly motivated.

 

The key issue being motivation, when I was a kid (I learned Pascal and C by the time I was 10, long, long story) the bar to create a application that felt as good as a commercial application was relatively low; most projects were staffed by very few developers and the development cycle for the projects was very short (if they wanted to stay in business in the emerging market).

 

Today hundreds of people of many different disciplines work on the development of a game, these details are lost on kids who just see something cool and say “I want to do that” this is a real problem; that’s not to say that the development tools are not getting better so that you can create relatively compelling stuff on your own without much background but if nothing else a kid can’t just go and do it on his or her own anymore they need parental support.

 

Its been a long time since I was a developer, and although from time to time I write stuff its more about a escape from the day-to-day grind than anything else; since he has shown interest how do I go about getting him the skills he needs to progress with this interest?

 

To this end one thing we have done is we have signed him up for more summer programs focusing on technology, this summer he is taking one on C++ (we couldn’t find a C# one); I also spent some time looking at books and found the material to be very lacking when it comes to fundamentals, in the end we picked up a K&R knock off that had been colorized and started working through it just to make sure he has the basic logical structure of a language down.

 

From there we will see what we do next, I have run across several books that have lots of sample code in C# for games like Pong, Missile command, etc.; once we get the basics down maybe we will try these.

 

Here are some links for folks if they want to explore what to do for their kids, let me know if you have any others you think are good.

 

Logo - http://el.media.mit.edu/logo-foundation/index.html

Scratch - http://scratch.mit.edu

KPL - http://www.kidsprogramminglanguage.com/

Visual Studio Kids Corner - http://msdn.microsoft.com/vstudio/express/beginner/kids/

Hypercard - http://en.wikipedia.org/wiki/HyperCard  

 

 

Print | posted on Tuesday, May 15, 2007 2:34 PM

Feedback


Gravatar

# re: Teaching kids to program. 5/20/2007 11:45 PM Malcolm

Perhaps you could add HyperNext to your list of languages that kids might find easy to learn programming with. HyperNext borrows many ideas from Hypercard and has a relatively simple interface with an English-like scripting language that doesn't need variable types to be declared. It can support multimedia, graphics, has a sprite engine and can interface with robots/electronics via a serial port. There are many example projects and stacks on the web site. HyperNext also includes RBscript, a fast modern object orientated BASIC, so that users can learn a more traditional programming language if required.

HyperNext produces cross-platform stacks and standalone applications for both Windows and Macintosh. There is also a Linux version under development.

The trial versions allow users to create new projects, save/load and run them, and build cross-platform stacks for the freeware HyperNext Player. In effect, you can learn to program with HyperNext for free.

Of course someone must still show the kids how to get started with it but HyperNext's learning curve is much easier than those of C, Pascal and Java etc.


Gravatar

# re: Teaching kids to program. 5/21/2007 4:45 AM Ryan

Malcom - Actually back in the late 80's I tought Hypercard to teachers in the Seattle area (through what was called the ComputerStore).

Thing is I didn't know hypercard before the offer for that job came up and it took me just a couple days to become very profecient (enough to teach it atleast).

As for why I left it off, well I had not seen it since OS7 or 8 (HyperNext looks very cool BTW), I had thought of it as a MAC only thing (clearly not the case anymore) and I was really focusing on languages that would get my son closer to game development in a traditional language (specifically C# since thats what XNA uses).

BTW for those who want to read about Hypercard check out - http://en.wikipedia.org/wiki/HyperCard its pretty good way to introduce folks to a high level logic language.

Title  
Name  
Email
Url
Comments   
Please add 2 and 8 and type the answer here: