As I've mentioned a few times recently, our students have been recording completed projects - this works both as a way for them to measure their progress, and for us to know how everyone is going. Something I've noticed, is that when someone gets a bit bogged down, whether it be due to things not working or making sense, or even just when working on a particularly tough bug, sitting down with them and working through it together seems to have a long-term positive effect on that student. There's often a subtle attitude change whereby they'll have renewed energy and also more confidence in themselves, and invariably we'll see those students really putting in the effort afterwards. I really feel that if someone doesn't quite get something I've shown them, it's my responsibility to try and explain it in a different way.

The Right Time to Move on to Python

So with Moonhack under our belts for the year, we started a few activities and picked our first group to move onto Python. Since the grade 6 students in this group are on their last year before leaving the school and Code Club, we try to give them priority. However, this is not to say that someone else working well won't get to do more as well. Looking through myEd, I was able to see which students had completed more than 50% of the Code Club Scratch2 module: the completion amount varied between 50 to 80 percent. Looking at the Scratch2 skills mappings, it's quite easy to get an idea of what concepts those students will be familiar with, and match up the suitable Python activities. Currently, I'm considering that we'll move onto some sort of hardware-based activities next.

These could include:

  • Robots, either GoPiGo, BrickPi, Mirobot, or BBC micro:bit based, especially as a few of our students have these already
  • Code Club's Sense Hat simulation activities, moving on to a real Sense Hat on one of our Raspberry Pis
  • A Python Flask web application activity that I wrote and trialled last year
  • Some Quberider exercises

Preparing for A Bigger Project

Time-permitting, either of these could presumably lead to a larger problem-solving project, that combines skills from a combination of prior Python activities. We periodically are visited by high school teachers in the area, so hopefully this will give them a head start while giving the students more to draw on and further empower them to stretch themselves at an earlier stage.

We've got a few ideas - so let's see how things go this year ;)

Making Things Work Better

This semester's Python group has been the best so far; in that the transition has been the smoothest and the culture we've developed is quite hungry and hard-working. We did make a few changes to achieve this though.

Some of the main issues we previously encountered when moving to Python included:

  • Moving into Python was difficult for those that hadn't progressed far enough in Scratch, leaving those students frustrated and without the focus to progress easily
  • There wasn't enough time allocated to get Scratch 1 and 2 done (Scratch2 being a pre-requisite for the Python modules)
  • Lack of structure and setting measurable expectations/objectives with regular milestones
  • Issues with inconsistent or non-working Python environments and editors on laptops
  • Distractions with too many short-term 'fun' activities that didn't necessiarly contribute to helping students actually learn coding concepts that would help them to code fluently enough to go past a certain point with implementing their ideas
  • Limited time spent by teachers and volunteers to go through Code Club Python modules, resulting in slow progress when first starting Python, combined with frustrations from having no Trinket accounts to save their work
  • Not having enough guidance on some activities, resulting in students not getting the full potential of learning from some activties
  • Issues getting to Code Club curriculum content in pdf files

The initiatives we implemented this year to prevent these issues are as follows:

  • Present clear expectations and objectives for Code Club, especially in terms of 'leveling up' and working through activities at a reasonable pace (each Code Club project is designed to take around an hour to complete)
  • Help students to track their own progress, and try to get them help as soon as possible, and make sure the type of help we give empowers them to replicate the troubleshooting processes themselves
  • Have a process for dealing with password resets immediately so that all students can save their projects as they go
  • Stronger communications with volunteers, with some volunteers going through Python exercises and other activities themselves - while also being open to support volunteers with knowledge-sharing and access to learning material if they want it
  • Accelerating the progress of students realistically, by starting at Scratch2 and supplementing the initial assumptions about prior familiarity with the Scratch interface
  • Show students how to access Code Club curriculum content in a browser, so they know they can access it themselves, and outside of Code Club ie at home
  • Use Trinket to begin with, so that students can focus on learning concepts before moving on to other Python environments
  • Acknowledge when students are ready to progress to more challenging activities and map these to physical spaces to allow some collaboration
  • Make sure that everyone is progressing at whatever level they want to, and assist with continuity and completion of projects

So How are We Going so Far?

So far, it's been awesome. We now have a group that are on to their 3rd Code Club Python activity this semester, with some already up to Python2 due to working on Python1 last year and in their spare time. We've also referenced the Code Club skills matrices, when students ask which activity to do next, so they can see why they're selecting a specific activity in terms of concepts they'll learn. This adds a bigger picture to their view of what they're doing and how it contributes to end goals. There's definitely a keen focus and a great buzz around the students working through the Code Club Python activities, and their progress is roughly 1 and a half activities per Code Club session. Since we know what Scratch projects they've done, it's easier to explain Python concepts in terms of these, and find useful analogies in Scratch, or introduce new terminology or rules. The students are getting heaps more out of the process and that makes them keen to progress. They're also excited to get started and at the end it's been obvious that they feel a sense of accomplishment with lots of hands raised in triumph or simply the hiss of "YESSSS!!!" when something finally works. We've had some productive discussions about concepts such as "don't repeat yourself" (DRY), creating objects that allow methods to be performed on them, and modelling things in code. I'm really excited to see how this group goes and last week most of the students mentioned that they'd be doing more at home too! Even though students have said this in the past but somehow been distracted and not able to, it seems that this group are more confident and driven that I am excited to see how they've progressed by next week!

It's Easier to See What's Possible

Due to the momentum, focus, and general excitement in the Python group, the students are starting to see the potential of what they can achieve. We briefly mentioned that we'll be able to get robots running with Python this week, and the understanding of how that could happen was definitely at a deeper level than we've seen previously. In the past, there was often a disconnect between what we could do and how we could do it. Now it seems that there's quite some vision and excitement towards how we can do things. The feedback we've received from parents has generally been positive, however I'm looking forward to when we can make something significant that the non-coding school population will sit up and be impressed by.

Here's one of the Code Club Python2 activities below:

Code Club activity screenshot from Python2