Rants
Questions
Soapbox
Best Practices
Apply today for a FREE subscription to CIO Magazine!
Thu, Jul 31, 2008 16:22 EDT

|
Posted by: Esther Schindler in Soapbox Topic: DevelopmentBlog: You're the Boss
Current Rating: |
When Nathan Torkington moved back to New Zealand, he got involved in his kids' school. Initially he provided hardware, which somehow turned him into the school's de-facto system administrator. Before long, he found himself teaching the grade-school students programming skills... and his experiences might inspire you to help out, too.
I have a folder stuffed full of "cool things I saw at OSCON" (the O'Reilly Open Source Convention, held last week; I wrote about its key themes here). And not enough time to write about all of them at once. So, to get myself to focus on one topic at a time, I'll begin with a topic near-and-dear to my heart: training the next generation of IT workers. It's what Nathan Torkington, who's board member of The Perl Foundation among other achievements, called "Spawning the Next Generation of Hackers" in his keynote session. Declaring—rightly, I think—that "Programming is now a basic life skill," Torkington shared his experiences in teaching programming to grade-school children. Here's a few of the points he made in his presentation.
(I've long wanted to write a feature story on this subject, but have always put it off in favor of higher-priority issues. E-mail encouragement might get me off my butt, so don't hold back.)
One lesson he learned is that robots aren't cool. Torkington started teaching the children using a LEGO MindStorms kit; it let them build a robot by programming the central controller. It sounded cool to him but he came to this conclusion: "Robots are lame." The killer app for the MindStorms robot was to make it follow a line on a page, he said, and it didn't even do that consistently. So children could work really hard on a project and have it still fail to work right, through no fault of their own.
Instead, he found, a better tool for teaching kids to program is the sprite-based Scratch from MIT, which despite some limitations is a fully-featured language. It subtlely introduces important programming concepts without banging the kid over the head. "You don't want to explain Java subclassing to an 8 year old boy," Torkington opined.
Other lessons-learned:
Lectures don't work. "You have two minutes, tops, when you have a class full of kids," he said. Instead, you have to focus on discovery-based learning.
They don't have math skills. Even simple math tasks, such as dealing with 90-degree angles to create a square, are too advanced for children. You have to pick the programming projects with that in mind. Or, he said, it's a good place for pair programming; the kid thinks in terms of creating a cannon for his game; the adult can do the programming that involves math and bounds-checking.
Typing is also a challenge. They haven't had keyboarding classes yet.
The gender gap is not what you think. "Everything is better with the girls," Torkington said. They're smarter, more focused, and they have better math skills. They're also more literate at that age, and they follow instructions, in Torkington's experience. "The boys just want to make a game like what they play on the X-box, and they're too ambitious," he said.
Follow their interests. Help them do what they want to do, or they won't pay attention. He showed them the basics and said, "Now you experiment. Decide what you want to do." Students used their new skills to tell jokes and stories, to create books (such as one girl's presentation about her favorite book) and to program simple
I enjoyed this article. Just a few thoughts: Alice (alice.org) is a very nice environment like Scratch, but is 3D. Scratch and Alice are great ways to get introduced to programming, but tend to encourage some bad habits. Once my students get fairly good with Scratch and Alice, I introduce them to Python (python.org). Then we use Pygame (pygame.org) to make 2D games.
http://briccetti.blogspot.com
I enjoyed this article because it gave me some new ideas for encouraging my own kids' interest in programming! Now someone else can host his passion, and maybe I won't have to rebuild our PCs so often from his experimental configuration changes and programming attempts!! :-( Thanks!
I really enjoyed reading this article, especially as the issue it covers is close to my heart.
I work for a software/hardware consulting group during the day, and teach CS courses at a local university a couple of nights a week. This year, I was tapped to help put together the program for my primary employer's "Bring Our Daughters and Sons to Work Day" event, which I wound up breaking into two sessions that covered what the firm does. We had them make "throwies" and take apart a couple of old computers in the morning, and then we showed them how to write some simple programs in Scratch during the afternoon. The kids had a lot of fun, and were very excited to see their stuff "come to life". (Now I have to figure out how to top it for next year!)
My eldest son is showing signs of wanting to follow in my footsteps, which is (to say the least) very cool. I'd be very interested in seeing a feature article on this topic, which would hopefully help to give me more ideas for work and for home!
You've just moved me one inch closer to doing that feature article.
In the meantime, do visit Torkington's site. I believe he's set up a wiki (or at least he referred to one) which is collecting things that work and didn't work in teaching kids programming skills. I'd love to see how shared knowledge can make a difference here.
I agree very much. I'm dismayed by all the programming tutorials aimed for kids that either 1) start with very high-level abstractions such as object oriented programming or 2) are small game kits that don't translate into programming skills in actual languages (though I do like Scratch).
To fill this gap, I wrote a book that teaches kids Python programming called "Invent Your Own Computer Games with Python". It's freely available under a Creative Commons license.
Invent Your Own Computer Games with Python
http://pythonbook.coffeeghost.net
Each chapter gives the complete source code to a simple game, and then explains the programming principles from the example. I've found that many programming books for kids read like math textbooks, or they concentrate on the syntax of the language and have practical application as a side feature. This book may not be the best for a mass audience, but for kids who are naturally interested in actual programming, I think it fits them well.