Teaching Kids to Program – Today’s Lessons Learned

image

In preparation for some larger scale events in 2010, I am working with a team of volunteers to develop new teaching methods and extensions to SmallBasic  to teach children to code.  Today we had our first live test (with 12 kids aged 9 to 16 – both girls and boys), here’s some of the things we found:

1) The recipe method works – We’ve written lessons using recipes (requirements in English) which the kids then translate into SmallBasic line by line.

SmallBasic Recipe Wiki

2) Pair programming works – So long as the pairs are NOT siblings and so long as the one typing and the one talking SWITCH at regular intervals, we found this method to work very well.

3) The environment matters – We created wall posters using the wiki recipe graphics (for inspiration) – these piqued the kids’ curiosity and served as inspiration.  The poster below shows the code where we saved the recipe, which can be imported directly into SmallBasic (via the import button). 
Of course also food, movement – snacks and frequent physical movement are a must to keep the attention span high and to keep all of the kids engaged.
DigiGirlzFlower Recipe
4) Variations work – after we got all the kids completely through a recipe, we verbally introduced variations, to get them thinking about the possibilities.  We’ll probably make a screencast of these variations as we haven’t written them down anywhere yet.

5) Extensions work – we’ve written several new objects for SmallBasic, based on previous testing with kids (on the phone), such as creating a replacement for the built-in Turtle object with our Tortoise object.  We’ve done this to make the objects and methods more intuitive and discoverable and to add documentation.  We’ll continue to write more extensions as time allows.  We’ve posted our extensions on CodePlex
SmallBasic Extensions on CodePlex

Here’s a sample of the Tortoise object and some new methods and documentation we wrote via extensions.
Tortoise.GetPenColor()

Here are some areas that we are still working on (and hope to learn more about in our next live test, scheduled for Microsoft Irvine next Monday, Dec 21).

If you’d like to have your child (ages 10 to 17, boys or girls) join us in Irvine for a two hour test session, please send me mail via this blog with the following info:

Name, age, time (9am OR Noon OR 3pm) and whether your child can bring a PC laptop with SmallBasic installed on it.

Areas of focus for next test:
1) Amount of conceptual explanation vs. time coding
2) Best method(s) to present conceptual information, i.e. in the SmallBasic IDE or verbally or in the wiki (example below)
3) Which recipes (pick two or three of all in the wiki) we should try to teach during a one-hour long event
4) Most effective ways to follow up / continue the learning after the initial introductory class.

Example lesson from the SmallBasic wiki, explaining Subroutines
SmallBasic Wiki SubRoutines 

If you are working with SmallBasic in any way, we’d love to hear from you.  What has worked when you are teaching kids and what has not. 

Happy coding!