I’ve recently started a 14-week volunteering commitment at a local school and wanted to share lessons learned here.  I am working with a couple of developers to create and to teach ‘Introduction to Computer Programming (using SmallBasic)’ as an after-school program.

Small Basic

It would be fantastic if more of us in the developer community would try this type of volunteering.  Here’s a ‘How To:’

1) Identify the school.  You’ll be surprised at how receptive schools are to the idea of this type of after-school program.  Tip: If you don’t have kids or your kids don’t attend a school you’d like to teach at, then start by talking to the Math teacher at the school of your choice, then talk to the school administrators.

2) Fit your proposal into your targeted school’s existing after-school schedule.  In our case, that means 14 weeks of one-hour classes.  The proposal should be one paragraph at most.

3) Get a couple other volunteers to agree to teach to cover for you if you can’t make it for part of the time that the class runs.  Life happens, but it is vital that you are able to actually host classes each week.

4) Determine your target curriculum.  In our case it’s ‘Intro to Programming’, but, in my experience, many more type of technical skills would be welcomed – think in terms of teaching what you LOVE. 

5) Determine the target age range for the kids.  In our case, this is 10-17.  This is a bit broad and can make for more challenging teaching.  One technique we’ve used quite successfully to reduce skill gaps in the students is to teach via pair programming.  If you aren’t sure if what you want to teach is age appropriate, try to test it out with a couple of kids in that age range before.  You can even do this remotely.  We use the free Microsoft Shared View tool for doing this.

6) Determine the weekly class schedule.  If you are working with someone else’s courseware, this is much easier.  Unfortunately, there doesn’t seem to be much technical courseware for kids out there.  In our case, we are writing / refining our own courseware as we teach this series.  This is, of course, much more work, however we are trying to build courseware that others will use (maybe you?).  We welcome others to try out teaching with our evolving SmallBasic recipe library.

Small Basic recipe library

7) Figure out how to install / maintain software you’ll need to teach from.  Most schools will allow you to install on their computers.  You might also think about asking kids to bring laptops (if they have them), so that you can help they can continue learning at home.  If you do use our courseware, then we have more information about setup (and teaching) at www.TeachingKidsProgramming.org

8) Kids learn better via a predicable structure, so create repeatable events.  In our case our sequence (one hour per week) for teaching is as follows:

--Teach a recipe via pair programming.  First kids code a recipe during which they learn 1-3 programming concepts per each recipe.  We don’t explain what they are doing, just have them translate line-by-line English into SmallBasic and run each line after they’ve translated it.

--Lead a recap of the recipe.  Here the two instructors repeat the recipe and have the kids watch.  This provides time for digestion and understanding.  Here we go over concepts and check for understanding.

--Challenge the pairs to a quiz.  Short quizzes reinforce in a fun way just how much the kids have learned.  Kids actually like taking our quizzes.  We're creating one quiz per each recipe.

--Lead the pairs in a guided variation on the recipe.  Here we teach refactoring, exploration of documentation and creativity in a fun way.  Turning one shape ‘into’ another via code usually elicits ‘oohs’ and ‘awes’ from the kids.  At the end of this we let the kids play and experiment.  Below is the Pentagon Crazy recipe and its variation.

Pentagon recipe and variation

Each hour we teach in a more-structured evolving to less-structured way.  We emphasize the agile approach to development, aiming to write recipes that can be visually ‘tested’ after writing each line of code.

9) If you are pairing kids, pay close attention to the dynamics of each pair.  Some kids pair better than others.  If a pair isn’t working, then mix it up.

10) Whenever possible, team teach (via pairing!).  It models the behavior you are trying to teach the kids, also it keeps the energy up.  Teaching kids is HARD WORK and it’s simply better to take this on with two volunteers.

So, that’s it for now.  Have you volunteered as a technical teacher for kids?  What did you teach?  What did you learn?  We’d love to hear from (and learn from) your experiences. 

Are you thinking about volunteering as a teacher?  Just do it!  It’s super-rewarding to see the kids get excited about the technology you love.