On Running a Code Club
Since September, a colleague (Pat Armstrong) and I have been taking part in a local schoolâs after-school Code Club, backed by Scott Logic. This is a nationwide, non-governmental initiative to aid children, aged 9-11, to learn programming. Itâs operated purely on a voluntary basis and is free for a school, library or community centre to set up. In this post, Iâd like to discuss my personal experiences from the initiative and provide some tips I found useful during the sessions.
What is Code Club?
Code Club lessons are structured into terms, each with nine lessons. The terms are further subdivided into âlevelsâ of difficulty. At the end of each level, the children are awarded a certificate to recognise their achievements.
Term One focuses on Scratch, an educational tool which combines a programming language and development environment. Using Scratch it is incredibly easy to create games, animations and interactive stories, which is perfect for whetting the appetites of budding programmers! Children are able to pick up Scratch very quickly - it needs little exploration and results are immediate.
Code Club lessons are extremely well-designed. Instructions are clear, concise and age-appropriate. Students are reminded when to test, when to save, and there are extension activities to really test the understanding of a project. Sample lessons are available online.
My Top 5 tips on Running a Code Club
-
Anticipate, log, and feedback issues. Follow the 7 Pâs of the military religiously. Before each lesson take some time to follow the lesson plans yourself to identify potential issues. For example, I asked myself: are some of these instructions tricky? Did I make a mistake? Is it easy to make a common mistake at this point? Jot these down, along with the solutions. If the lesson introduces a new programming concept, come up with some spiel to explain it. Explaining the notion of a variable to a bunch of kids off-the-cuff is tricky! I overcame this with a heavy focus on examples. I also maintained a diary to track the progress of the students and the details of any issues we encountered. In one specific case discovered a bug in the lesson code! Code Club host plain text versions of their lessons on Github, which gives you an easy way to provide feedback. You donât have to be meticulous with your book-keeping, but reporting on your experiences makes the lessons better for everyone!
-
Use the check-boxes! Each instruction in the lesson plans has a check-box to the right of it. Make sure the children use them! When youâre diving into a piece of new functionality itâs very easy to lose track of your place. Give each children a pen and hail the importance of keeping track of work. We didnât quite make it through one lesson a week (some of which is down to the nature of an after-school club session), so having the students record their progress meant they could get straight back into the action at the next session.
-
Encourage problem solving. Itâs easy to grab the mouse and show the student the solution when they get stuck. That works well in the initial stages, providing you carefully explain why your change fixes the issue. In the initial sessions I tried my best to do this, but as the students progressed to the later stages I began to take a hands-off role. By this point they have some Scratch experience under their belts, so itâs worth giving them a chance to figure it out for themselves. One way of achieving this is to ask the students to read the code aloud. Sometimes theyâll spot the issue straight away (âoh, Iâve got less than when I actually meant greater than!â). I donât tell them we call this rubber-duck debugging! However, if that doesnât work, I instead try to encourage problem solving by explaining the requirements, sometimes with other examples.
-
Recruit helpers. Some students will finish lessons before others. Luckily this is anticipated! The Code Club material contains extension challenges to add an extra level of difficulty. I found that some of the challenges were quite tricky (one required completely changing the perspective of a game), but effectively cement the knowledge developed over a lesson. It can be great fun to get students who finish these challenges to help others! A key concept in programming is communication - including verbal communication. Understanding requirements, talking through solutions and helping others are all vital skills that should be encouraged within the club. Not only that, but you develop a community atmosphere in which everyone helps each other complete the work. After all, itâs not a competition.
-
Have fun! Code Club can be hard work, so take a step back and enjoy it! Give the students time to play the games they create, especially when they need two players! The students will quickly come up with new ideas and begin implementing them! Students will also want to put their own spin on the games. Wherever possible, allow them to do so. Itâs not always possible to deviate from the lessons, such as with Fish Chomp (collision detection is performed on a fishâs teeth, which is not possible on all sprite images), so be aware of where the students will have to be more constrained. If theyâre having fun, youâll be having fun and theyâre learning!
The Developerâs Perspective
Programs in Scratch are created by dragging and dropping âblocksâ of functionality into a stage. The shape of a block affords its function - iterative and conditional blocks literally enclose their contents. That way itâs easy to see exactly what code will be executed under certain conditions. Interactive components, known as sprites, are added to a stage. These can be styled with âcostumesâ, respond to messages and events (such as mouse clicks) and can contain their own scripts.
Scratch comes in two forms, both of which are available for free online. Version one is a desktop application and version two is both a desktop and web application. Scratch 2 also has some new features that the Code Club material doesnât cover, such as function blocksâ. Thereâs an ongoing effort to convert the lessons to Scratch 2 over on GitHub, should you wish to help out. Until the Scratch 2 conversion has finished, I advise sticking to Scratch 1.4 as there are some subtle differences between the two platforms.
The very essence of possessing a general-purpose computer is its ability to be programmed, unlocking another form of creative expression. Passing this knowledge to the next generation and seeing such a rapid, passionate uptake of the information is something Iâve found to be extremely rewarding. Indeed, Iâd go as far as saying this is the most rewarding experience Iâve had in my professional career. Computing, specifically programming, is becoming an integral part of education - next year will see a new Computing curriculum introduced in the UK. If done correctly, this can have profoundly positive effect on the capabilities of our future society. Being a small part of that is exciting and something I canât recommend enough!