Llewellyn and I spent last week at (snowy!) Microsoft Copenhagen, preparing to teach Danish DigiGirlz coding (see picture below).  Here’s what happened and what we learned.

Llewellyn and me in front of MS Copenhagen

We were part of a very successful event.  100% of the participants said ‘I would like to attend another DigiGirlz event’ and also 100% personally told me that they would volunteer to proctor at a future DigiGirlz event. At this event we taught them to code and none of them had any previous coding experience.

Over the two days, new girls joined us the second day, based on the recommendations of the girls who had attended the first day.  So, what did we teach over the 2 days?  Mostly SmallBasic recipes and also some T-SQL queries.  We taught both topics in the intentional-style.  What this means is that we provide the English-requirements first, and then guide the attendees toward translating those requirements line-by-line into code second. 

One of the most interesting learnings for us for this event is that we were able to integrate with the local Microsoft team (Lena, Cecilie and Christina).  We spent 2 days prior to the event training them in our recipe-based methods.  Because of this these three (non-programmer) women were able to co-teach the event with us (in Danish where needed).  

By working side-by-side with Lena and other local Microsoft employees, we were able to achieve our #1 goal, which is to help people who care to be able to teach kids all over the world.

In addition we implemented some significant improvements to our offering.  These included a ‘virtual proctor’, which allows us to monitor each student’s progress by capturing their screen each time the students execute their SmallBasic program (note screenshot below).  This functionality allows us to interact more effectively with the students because we can always see all of their progress (like an information radiator).

We did this by updating our SmallBasic extensions to include a TDD-like functionality  (implemented as calling ‘Tortoise.Approve()’ from within a SmallBasic program).  Below is a picture of the output of virtual proctor as we were mid-recipe for teaching Pentagon Crazy.

Virtual Proctor - photo by Mike Kolloffel

The next improvement we included in our extensions as well.  This improvement was to add a short quiz after a recipe.  The quiz is presented in the format of a SmallBasic program (as shown below).  It is our intention to write quizzes for each recipe in our library and to post those quizzes to the recipe wiki.  A sample quiz is shown in the picture below.  When the students pass the quiz, then they smile because they realize what they’ve learned.

picture of quiz for Simple Square

We also refined a key recipe, the ‘simple-bubble’ to the variation ‘bubble-wand’.  This allowed us to teach more advanced programming concepts, such as arrays, nested conditionals and more.  Below is a sample of a portion of the the code that the girls wrote for the Bubble Wand recipe, on their second day of writing ANY code.

SmallBasic Create Bubble recipe

In having the ability to teach a relatively large number of recipes over a two-day event (4 recipes + 4 variations taught), we further reinforced the validity of our intentional-teaching method as a way to introduce (and excite) new programmers to coding. What this means in practice is that we teach using a particular order of techniques for each recipe (or set of coding concepts):

1> We, as facilitators, guide the participants to code a recipe, which will include one or more programming concepts (such as For loops in the Simple Square recipe).  Participants will translate English requirements line-by-line (in a TDD style) into SmallBasic code and will attempt to execute the program after each line’s translation.  We do NOT provide any advance explanation, simply get them started coding as a first step to learning.

The initial recipes focus on the SmallBasic logo-like Turtle-object (or, in our case, our ‘extended’ turtle [which we call ‘Tortoise]). This  has great visual output (draws lines on the Program Window).  The participants can SEE the program being built as they code. 

This TDD-method engages the pairs of kids programming. 2>Quick concept explanations.  For new-to-them constructs, such as a For loop, we simply use a single slide to explain the syntax.  An example from our slides is shown below. To get our deck, go here.SmallBasic For Loop syntax

3>Post-recipe iteration / review.  After all have successfully completed the recipe, then we quickly present a re-coding of the recipe (as pair teachers), so that the students have time to digest what they have just done.  Llewellyn and I have recorded an example of how we’d recap the Simple Square recipe already and we intend to record this type of recap for all of our recipes as time allows.

4>Variations – here we are teaching refactoring via action.  We guide the kids to make incremental changes to the existing code line-by-line, rather than having them translate English words, so that they can literally see what such small changes to code can create.  We also encourage creativity in this section.  ‘Try it out’ is our favorite phrase – and they do. 

It is a joy to watch kids coding up a storm, proudly showing each other their creations.  An example of what one pair of Danish DigiGirlz made by ‘varying’ the Pentagon Crazy recipe (output picture shown below) into a ‘Crazy Flower’ (second picture) shows the power of this technique.

Pentagon Crazy

became the flower below

Pentagon Crazy variation - flower

Llewellyn and I have also recorded an example of what we do in the variation (for the Simple Square) and I’ve linked it below.

5>Quiz – last we present a short (up to 10 question) quiz where the kids translate individual lines of English into Small Basic using the concepts presented in the recipe previously taught.  We do this to reinforce conceptual learning.  Based on feedback, we are considering creating mini-recipes, which are completely unguided, rather than single line quizzes.  Below is a screen-shot of our first quiz (written to test the concepts presented in the Simple Square recipe). 

Simple Square Recipe Quiz

As always we are energized and motivated to add to our work based on this last event.  For the future we are looking to work on the following:

1) Create new recipes which create a practical application – such as a web page, a facebook application, an Ebay mini-apps.  Add these recipes to our library.  Write SmallBasic extensions as needed to support objects needed to execute these recipes.  Also we’ll create a test harness to display the output of T-SQL queries (to a SQL Server Express database) in a SmallBasic application.

2) Write more quizzes or mini-recipes for each recipe in the current library

3) Refactor the extensions for the Virtual Proctor to make it cleaner (will result in a SmallBasicFun extensions new release)

4) Add variations for every recipe, document those variations on our recipe wiki.

5) Create videos for kids for each recipe and variation.

6) Create videos to train trainers in our teaching methods (i.e. pair programming, 5-minute sprints, visual TDD, etc…).  Develop a ‘teach intentional coding in a box’ toolkit of materials for both teachers and for logistics managers so that they can host #TeachingKidsProgramming events in their cities.  One of our goals for 2010 is to provide artifacts so that '#TeachingKidsProgramming events can run across the US without us being physically present.

7) Add structure to our T-SQL course.  Currently we have only intention-driven queries.  We’d like to add material based on what we’ve learned teaching SmallBasic – such as recipes/concept slides/variations/quizzes, etc…

_________________________________________________

Here is our current live event list for 2010

Feb – Dare2BDigital – Foothill College, Mountain View, CA – Sat Feb 27

March – TeachingKidsProgramming – 2 Friday events at Microsoft  Mission Viejo, CA store, dates TBA (watch this blog to sign up)

April – Microsoft / DigiGirlz events – 4 Friday events in California – SD, Irvine, LA, SFO (sign up via the MS event site)

May – TeachingKidsProgramming – 2 events in Chicago and NYC

June – Digigirlz Fargo, ND & TeachingKidsProgramming – Vancouver, Seattle and Portland

July – TeachCamp UCSD SD

August – TeachingKidsProgramming – Durban, South Africa & Lusaka, Zambia

September – TeachingGirlsProgramming – Grace Hopper Conference

____________________________________________________

As always, we welcome feedback on our work.  We are maintaining a resources page on my blog – here.  As a FYI, we have received requests for more information from the following locations (we’ll aggregate multiple requests from same locations, so that like-minded volunteers can work together):

US
1. Microsoft DigiGirlz
Fargo, ND, Seattle, Washington DC, Atlanta

2. User Groups
West - California, Oregon, Washington, Arizona, Colorado, New Mexico
Central - Illinois, Wisconsin, Indiana, Arkansas, 
East -  Ohio, Florida, New York 

3. STEM education groups
Seattle, San Francisco, Minneapolis, San Jose, Boston, Washington DC

4. US Dept of State – Washington DC

5. TedX – Silicon Valley

6. Grace Hopper Conference - Atlanta

North America
OpenAgile 2010 – Vancouver
Developer User Groups – Toronto, Mexico City

South America
Developer User Groups - Brazil

Europe
Microsoft Digigirlz – UK, Sweden, Denmark
Microsoft TechEd Europe – Spain or Germany

Africa
Microsoft TechEd Africa – Microsoft DPE, Durban, South Africa
Ministry of Education – Lusaka, Zambia

Middle East
Developer User Group - Dubai

Asia / India
Developer User Group – India

Australia
Microsoft TechEd Australia – Microsoft DPE

Kids are the future – help us engage them in programming!

We invite you to join us Teaching Kids Programming. RSS this blog for ongoing information updates.  Send me mail via this blog if you have a specific question about the work we are doing in this space.