After another year at Pycon and really throwing myself into the coding community with my coding evenings and any other events that have caught my eye, I find myself reflecting on the purpose of teaching coding within a primary school. What do we hope to achieve by teaching complex languages like Python and Ruby? Why do anything other than Scratch? What do teachers really need to know to teach coding effectively?
In my own practice, I can say with confidence that I’ve made numerous mistakes trying to teach code, but one thing that became increasingly clear to me over last weekend was that it’s not WHAT languages of code you’re teaching that is important, it’s HOW you are teaching and whether you are demonstrating and modelling good practice to children yourself.
So, why are we teaching coding?
My understanding of coding as a subject has grown this year and I am now confident that teaching coding teaches children a number of critical thinking skills, not least of which is problem solving and error correction. If you’re using pre-packaged kits like Espresso Coding, you’re not going to be stressing these independent skills so it’s important that you allow children creativity in their coding.
This brings me nicely onto my second point…
What if the teacher doesn’t know much about coding?
One thing I realised over the weekend was that no one expects coders to know everything about coding. A lot of writing a programme is all about borrowing and modifying someone else’s code to suit your purpose and I think it’s really important to model that to the children you’re teaching. I make it clear that I’m learning to code with them and, if something isn’t working, we both look it up together and find some existing code to play with and fit to our purpose! Teaching doesn’t have to be someone stood at the front of the classroom pouring knowledge into their class’s heads…in fact, as adults, we constantly seek to further our knowledge by looking things up and investigating new ideas and outcomes, so why shouldn’t we model this for children? And hey, why not throw in a quick lesson on why some sources on the internet might not be as useful as others because of their source, their age or their content while you’re at it!
What languages should we introduce in the primary school?
There are lots of arguments floating around about what we should be teaching and why. I teach Python, Scratch and HTML in my primary school, but I don’t teach them as a separate and complete unit, rather I introduce the children to key concepts through playing and trying out projects if they feel ready to move on from block-based languages. I let the children make their own way through Codecademy *if they want to*, but I’m also happy for children to carry on using Scratch as long as they can achieve their purpose with it. My point about using Codecademy is that it isn’t an amazing tool for learning to code, but what it is, is a great way to learn some basic language as well as to encourage children to start supporting and debugging each other. It is only through ‘fixing’ someone else’s code that I learnt some of core ideas and the same is true with the children.
I also like to give children Python code for the various hats on a Raspberry Pi or for hacking Minecraft, but the purpose of doing this is firstly to encourage accuracy, but more importantly, to encourage the children to make changes and discuss what each line of the code actually achieves. It’s no good getting your children to blindly copy the code and then walk away claiming to know Python because they got blue flowers to follow Steve around the map.
Saying that, this is also true of Scratch – if you asked your children to create a platform game in Scratch without any instructions, would they be able to? Do they rely entirely on copying the information from the Code Club worksheet and then just walk away at the end or are they capable of manipulating their code to make something new and unique happen?
I am concerned that too many schools will suffer ‘death by Scratch’ or, even worse, ‘death by Espresso Coding’ by repeating the same, boring exercises over and over again each year without any practical application or opportunity to change the code and make it their own. It’s important that we are not just ‘teaching’ languages of code by following schemes of work and worksheets, but that we, as teachers, are thinking of innovative and interesting ways to use code to achieve an end goal.
Coding is a fantastic skill that can be used to achieve a broad range outcomes regardless of whether you are sticking to block-based code or moving on to a text language like Python, but only if we encourage creativity and playfullness with our code in the same way that we encourage creativity with our story writing.
So, there’s no surprises here, teaching code isn’t just about finding the best and most cutting edge resources, it’s about teaching effectively and modelling to the children, managing your expectations and encouraging them to be independent learners. What matters most is that you let children know that’s ok to get things wrong, it’s ok to look at other people’s ideas, it’s ok to not know everything straight away!
Enjoy teaching coding and make your classroom independent, interesting and fun; allow your children the chance to play, have fun and join in yourself. It shouldn’t just be the children that are enjoying your lessons about code!