Teknoteaching: programming in the classroom

I recently had a chat with Alan O’Donohoe, aka @teknoteacher, a computing teacher from Preston. Bursting with energy and enthusiasm, he has a blog, a series of podcasts, runs a raft of computing CPD as well as Hack to the Future and Raspberry Jam events intended to engage the public with computing. No wonder he’s a CAS Master Teacher. Last time, Alan talked to me about his Raspberry Jam events (meetings for Raspberry Pi enthusiasts) — this time we move on to talk about teaching computing in the classroom.

Me: So let’s talk a bit more about the computing GCSE and teaching in the classroom. Which programming language are you using for the GCSE?

Alan: Python. I don’t believe it’s the only one true language, it’s just the one that suits me at the moment. I get excited reading about Lua and Ruby and Java and C# and all the rest. At the moment, though, Python is for me — perhaps you disagree, or think there is another language more suited to teaching; I’m able to get children excited and engaged very quickly with it – and that’s what counts for me. Other languages can feel like a steep climb. I tried Java and couldn’t get my head round it. I found something else instead that works for me.

Me: You only need one language for the GCSE though, right? You find what works for you.

Alan: The thing I like about Python is that it has a low floor and high ceiling. Within a line or two, you can build something and get something working, without a long setup and declaring all these variables. You can get something working quickly, yet you can have very powerful scripts that plug all sorts of modules together.

Python seems to be a fairly popular choice at Key Stage 3 (11-14) and GCSE
Python seems to be a fairly popular choice at Key Stage 3 (11-14) and GCSE

Me: One thing I have heard said against Python was that because it is dynamically typed – the types aren’t obvious, like they are in Java – that students don’t pick up on the idea of types as much. Do you find you need to put more effort into explaining types (strings, integers, etc)?

Alan: Bear in mind I haven’t taught another language, but it is a stumbling block in my teaching. At the beginning, when you use the input function, it always returns a string. What I do early on is work with numbers, as you can do a lot without worrying about string manipulation. Except you have to convert the string to an integer to begin with. So the children get into the habit of converting every input string into an integer. Then later on when they start working with strings, they’re still using this integer conversion – but now unnecessarily.

Me: I’ve heard some people complain against high-level languages hiding details, and say you can’t understand the computer unless you understand assembly language and logic gates. I don’t really buy that: it’s still programming whatever level you’re working at, you still need algorithms, control flow. You don’t have to understand assembly to program in Python.

Alan: Think of making a sandwich. If you want to show someone how to make food for themselves and you want to show how to make a sandwich, you need two bits of bread and a piece of ham. But you wouldn’t start off by saying we’re going to plant some wheat, then come back and harvest the wheat into flour, and then bake the flour. At that stage they’ll have died of starvation! If they’ve got the spark of interest, if they’re saying “how do I make a sandwich?”, you need to grab that, there and then, not by bamboozling them with all the detail. That doesn’t mean there isn’t a place for learning all of the detail. It’s abstraction, but it’s a fine balance.

Me: I guess the difficulty in the classroom is you’ve got to pick one language.

Alan: That’s just it. If you’ve got a class of year 9s who are 13 or 14, half of them are already switched off because they’ve looked at their role models in their life and they’ve thought: “programming, that doesn’t hold any value for me, I’m never going to use that.” And I say: “ok, today class we’re going to learn about the different data types in Python.” Well half are thinking: “how useful is this going to be for me?” That’s the problem with school: you have this curriculum that says today: at ten past nine on Tuesday morning we’re all going to learn about data types. Who decides?

Interesting fact: one of the PlayMyCode creators is a Kent graduate who used to do some work on Greenfoot.
Interesting fact: one of the PlayMyCode creators is a Kent graduate who used to do some work on Greenfoot.

There’s a girl called Sophie [name changed] that I’ve taught in year 9. She’s one who’s struggled at maths and English all the way through school, she hasn’t achieved the basic minimum that others have, this magic “level 4” in SATs. (Levels, bah!) I showed them play my code, I call it the youtube of code. They use this language Quby that they’ve derived from Ruby. I showed the students how to change a game in a lesson, so they could have the game, and play tricks on other people. When they play their modified game, it looks like they’ve hacked the game and are a genius at playing it, but when other people play it doesn’t work for them. I told them how to do this and they thought it was really funny. Everyone is crowded around Sophie’s computer, so I went over to see what she’d done.

She hasn’t just changed the variable value for the number of lives or the timing like the others have, she’s gone through changing whole blocks of code. I said “how do you know how to do this?”. “Oh, it’s easy, these are the variables for this, these are the variables for that, I’ve changed this, I’ve changed that…” Within ten minutes, she’d made an amazing amount of changes to this code and changed the game, but people will say “oh, Sophie, she won’t amount to anything. She won’t even pass maths GCSE” And yet in this particular example, she was the queen of them all. She’d figured out how to do this thing. To my knowledge, she’d never had any experience of programming languages, I hadn’t even introduced Python — they’d just used Scratch in year 7 and year 8. That memory is emblazoned upon me – I wish I’d had a video camera.

This is why it really winds me up when people tell me “oh Alan, love what you’re doing, we’ve decided to introduce GCSE Computing next year — what we’ve done is we’ve handpicked a bunch of boys from the top maths and science classes and we think it would be perfect for them.” So I say to them: “oh, right, and what about the children that it would be perfect for and haven’t been picked” and their reply is “well, we’re just worried about the grades, you know, ‘cos we want the ones who are going to get the As and A*s”. This girl, Sophie, if she did choose computing at GCSE, she would never achieve an A or an A* — and does that suddenly devalue the whole thing, because everyone has to be the absolute best?


Going back to the Raspberry Jams, the Hack to the Futures, they exist because there’s no GCSE grades given out, we don’t have homeworks and learning objectives and lesson observations. We take the best stuff out of school and we bring some more stuff in as well, and mix it all together and see what happens.

While I’m a huge fan of tools like Raspberry Pi, Scratch, Python – fundmentally it’s in the face to face interactions with people where the real magic and inspiration happens, not on a computer screen. The Hacks and Jam events are where these highest quality interactions happen; mums and sons, dads and daughters, teachers and enthusiasts all together in one space sharing a passion for learning, creating and making digital. You can only judge this yourself by coming to a Hack or Jam and experiencing it.

Recently, I’ve really struggled to balance being a dad, husband, teacher, teacher-trainer and do all these events as well. From September 2013, I hope to be able to manage things more effectively with the help of the £50,000 grant from Nesta, Nominet and Mozilla and the support of those around me. You can keep track of my progress through http://about.me/alanodonohoe

Me: Thanks very much for your time Alan, and good luck with your endeavours!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s