3 years of teaching programming to primary school children

scratch makey makey

I’ve been teaching programming to primary school children (aged 9 to 11) through an after school club for nearly 3 years now and this post details some thoughts in review, some lessons learnt and things you might want to consider if you’re thinking about doing the same thing. You can read my thoughts about starting out here.

For the majority of this time I’ve been teaching scratch using the curriculum supplied by Code Club. In the past 4 months I’ve switched to teaching python (still using a Code Club curriculum), as the level of scratch skills throughout the school has grown significantly.

  1. At the beginning I was scared that I wasn’t going to be a good enough developer to teach children. My tech background was based around databases and infrastructure and I only ever wrote very average code as a sideline. This was unfounded, as the entry level required was fairly simple, especially with scratch. Don’t let this put you off.
  2. I also worried that I wouldn’t have enough time to prepare properly for the lessons (1 hour a week after school). Again this was unfounded as using the prepared curriculum from Code Club meant that I only needed a brief walk through of the project I was going to teach the night before. (This has changed a little now I’m teaching python though).
  3. I’ve been very lucky to have an extremely good teacher work with me for most of the classes I’ve run. This makes a huge difference and gives me the ability to cover more children. Our club is massively oversubscribed at school and covering as many children as possible is a big thing for us. The maximum we’ve managed is 17 students at once, but this was definitely a struggle and I felt that I couldn’t give everyone enough time. It just makes you realise what an extraordinary job teachers do, managing a class of 30 children every day.
  4. I think 10 children is an ideal number for python (last week I had only 7 due to sickness and this worked really well as I was able to really spend some time with each child and focus on them)
  5. I don’t teach any of the children python until they’ve done at least one term of scratch to get the basic theories under their belts.
  6. The difference between years 5 and 6 are really noticeable. Maybe this is obvious but at that age an extra year of age makes a huge difference in their ability to grasp the concepts, particularly in python where there is less immediacy of return on their time. In scratch we can usually get a half decent game running in the 2nd week of the first term, having started with zero knowledge. In this day and age when the children have high expectations of what represents a game, especially compared to when I was growing up in the 80’s and using ZX Spectrums, some have trouble with the text based games and routines in the early days of learning python.
  7. When teaching python, the first class is often based around teaching the children the basics of desktop management. Scratch has a very friendly IDE, but when we run python (we use IDLE) we often spend much time in the first week sizing and moving windows, switching between the lesson plans (in a browser) and getting them used to the basics of a full desktop environment. Many will consider themselves computer literate, but will often be flummoxed by moving files around the OS or running multiple windows. This is a reflection of the the devices they’ve grown up using in the past 5-7 years, and also the nature of the UK computing curriculum previously (which is now getting much better). That said I think this is very valuable learning as well
  8. As mentioned above this term I’ve switched to trying to follow the lesson plans in browser. Previously I’ve printed them all off on paper and given them to the children where they can tick off each task. This worked really well but I became dismayed using up so much paper and colour toner (even if I did recycle it at the end of the lessons), so I switched to browser based plans this term. The children have great difficulty focusing so well on instructions that are in a browser window.
  9. The speed at which the faster to learn children and the slower to learn children diverge in terms of their progress appears to be dramatically larger in python. Those that get it, really push on even after week 1 or 2, and hoover up more knowledge, searching for way to translate skills they’ve learnt in scratch, into python equivalents. Those that need more close coaching to get through the lessons can easily fall behind and become a lot more frustrated than when the equivalent situation comes up in scratch, as scratch is much easier to just play around in and get something to happen. Another reason to keep the class sizes smaller for python if you can.
  10. Running the club remains a highlight of my week just as it was when it was fresh and new at the beginning.
  11. We still get about a 50-50 mix of girls and boys as we have had all along. Very different to all my teams at work, and a good sign that things are changing. It’ll certainly take a while yet for this ratio to pass into the workplace though.