As you might already know, we dived into Python after a couple of small groups did pretty well towards the end of last year - when we played with a Raspberry Pi SenseHAT, some RGB LEDs, and developed a micro:bit-powered plant monitor. The plant monitor proudly sat in the school office for the rest of the year, and later evolved into a self-watering plant on Kid Inventor day. This year was spent making our way through Code Club's Python modules 1 and 2, and more!

Everyone Learning Python

As we'd had a few false starts with Python, it felt like a fairly bold move when our teacher representative, David, announced to the students that we were doing Python this year - most had a good serving of Scratch, in previous years, so we wanted to increase the scope to equip everyone with skills to go further. It was encouraging to get positive feedback, once students had settled into learning Python; previous complaints about Scratch being too easy, or limited, gave way to more focussed engagement with fairly regular hands in the air, asking for help. This time, the main difference was that each question resulted in clarification of new concepts in additon to finding bugs; whereas in Scratch we were just looking for bugs/typos. To me, this is usually a good sign, or at least better than a silent classroom, which sometimes means people are doing something else and not really challenging themselves. One difference this year was that, rather than just saying we were trying, we said "this is what we're doing" (cue Yoda reference here). Our expectations were essentially more solid and positive, because we had specific goals and as we progressed, so did the realisation that the scope of Python is much larger than Scratch.

Remembering and Revisiting our Own Code

Although we were predominantly working on Python, this year was also interspersed with a variety of shorter activities, which notably included Moonhack, where most students managed to complete multiple activities in both Scratch, Python, and micro:bit PXT (MakeCode). Other activities included a few sessions of Spheros and some free time sessions with Scratch. Some of the girls worked on a few of their own projects for extra events they were attending.

Around midway through the year, we decided to pause and refocus; spending some time with each student, to get an understanding of what they had completed, and where they were at with things - it was following this that we tried to empower students to go back and complete anything that they'd not had a chance to, and really make sure things worked. This was invaluable as it had been a while since some of the earlier Code Club Python exercises had been looked at - it really helped solidify concepts by revisiting those projects. Since we were using Trinket.io, it was easy for everyone to keep track of what they'd done and easily reference old projects at these later stages.

Open Night

During the school's open night, I was approached by one of the organisers, to put together some introductory projects, with some BBC micro:bits that were funded as part of the night. We did 3 x 15 minute sessions, starting those new to coding with basic drag and drop MakeCode blocks on the micro:bit, while also providing more advanced activities that kids could move into if they wanted to stay for another session. Much to our delight, a good percentage were excited enough to stay on, with some completing all the available projects!

New Hardware

As we had a bit of help with getting some micro:bits, we were able to use some budget to get protective cases, and some Adafruit Circuit Playground Express (CPX) devices. The beauty of these is that they can both be programmed with drag and drop blocks (MakeCode) or JavaScript, and a version of MicroPython called CircuitPython. Featurewise, the CPX devices offer:

  • a built-in speaker;
  • capacitance touch pads (think MakeyMakey without needing a ground);
  • multicoloured NeoPixel LEDs;
  • infrared communications;
  • a built-in charger for using lightweight lithium polymer batteries;
  • sensors such as noise level, temperature; and
  • multiple interfaces for expansion.

From a coding perspective the CPX are quite expandable with lots of MakeCode extensions available for various micro:bit, Circuit Playground Express accessories, and and libraries for Python running on these devices. The school was also able to use these for classes, which was great to see. We also got a couple of Monk Makes electronic kits for the micro:bits.

Electronics with micro:bits

Some of the students managed to get through all the Python exercises, working hard during and outside of Code Club. It was great that we used Trinket.io with accounts that kids could access from home. We also finally sorted out all our password issues in a couple of sessions at the start of the year. After some discussion on how we best sort out this painful issue, our teacher David did a great job at getting everybody signed up; using the grade 6 emails, and having a common email address that we controlled, for the other accounts. Since we had the couple of MonkMakes electronic kits available, these kids were able to work through them, doing all the exercises in Python. Of course, there was a small group that somehow had 'forgotten' or just weren't able to log in, but this was considerably smaller than any previous year (less than 6), and we were able to get them into scaling Scratch game design later.

That Startup Show and Moonhack

While preparing for Moonhack, one of our students got up and explained to the rest of the club, how she completed the Python activity and gave some hints and tips. Then, just before Moonhack, and opportunity arose for some of use to be on That Startup Show - unfortunately it was a busy week due to Moonhack, but we managed to get one of our volunteers on there, with her younger brother, who also attends the Code Club with great enthusiasm. We felt especially proud when he answered, "Python", when asked what his favourite programming language was. And later that week our kids did exceptionally well to cover most activities at Moonhack, and present their work in front of the group. That week was exciting for both kids, parents, teachers, and volunteers.

Taking Initiative

A few of our Code Club students worked quite hard on their Python projects and put together a project that involved using the MakeyMakey and lights in a box; while others used the spare time to work on their own private Scratch projects that they'd been doing outside of Code Club (yes, Scratch had become theirs!!). We gathered everyone around to appreciate and be inspired, and talk about how we could apply skills to our ideas.

Term 4

Having had such progress, we really had to sit down and think about what we would do for term 4. The idea that I eventually brought up, was to have a few workshops going for 2 weeks each, that we could rotate smaller groups through, over the term. Although we had a few weeks that were a bit unstructured, while we worked with the IT people at the school and developed some content, we eventually came up with the following workshops:

  • Scratch Games: Although I didn't see much of this while running my workshop, it delved into some of the design involved, and other concepts used, when making scalable games. There was a lot of hands-on with lots of flexibility to accomodate different ideas.
  • Makey Makey Cookie Jar: This was a cookie jar alarm, based on an idea from Colleen Graves' MakeyMakey book. Interestingly, a school activity had used all the aluminium foil on the first week, so we did a bit of improvising with alligator clips and metal pieces. Unfortunately the volunteer running this had to bow out towards the end of the year due to other responsibilities, but we did get it working with a couple of groups before that.
  • TinkerCAD 3D design workshop: This workshop went back to some of the 3D design we'd done in previous years, with a bit more focus on making designs fit specific measurements, aiming to make them more functional. We coupld probably have structured this a bit better, although everyone did seem to end up with a design at the end. Ultimately, it would be great if we can one day incorporate 3D printing into a project that combines electronics and coding.
  • micro:bit distributed sensors: I wrote two activities for this, one using two micro:bits to transfer data from a sensor over wireless communications, and the other involving a more involved activity that used multiple sensors and multiple micro:bits. One of our volunteers ran this quite successfully, with a few groups getting through to completion.
  • Python Capture The Flag: This was something I wrote in Python Flask, and hosted in Amazon's cloud. Developing this was a bit interesting since I had to work between the constraints of the school network and the computers we were using. Eventually, I made it all based around Trinket.io and web-based. The first group was able to get all the way through in 2 sessions, and then we put 3 groups through in parallel, pitting them against each other, with all groups getting through to the last level, with only one other group managing to complete that as well.

screens

Just before sitting down to write this post, I was asking myself what I could write about. As things got flowing, I started to remember good things that I'd totally forgotten! In hindsight, expanding on last years subset of Python learning, we scaled that to pretty much the whole club, and really clarifying expectations that Code Club should be an opportunity to learn, seemed to work well. The more engaging Python exercises helped kids stay focussed, and then stopping to take stock of where everyone was at, and sitting down and helping kids complete exercises that may have been forgotten, gave us a healthy jump start at that point. And it was interesting to see that Scratch wasn't forgotten, but rather I found out that many were carrying on with Scratch on their own, outside of Code Club - they had taken ownership, which is great to see!

Next year, it seems that those who attended this year, will be able to do more with hardware/electronics, and hopefully we can combine some of what we've learned with 3d printing..and maybe, just maybe, we can get some soldering in there.. :)