Recently I conducted a coding workshop for teachers at my school’s curriculum day. Given that I had 45 minutes and participants with a range of skills, I decided to teach them something immediately useful. We took spreadsheets of class lists with marks and automated various basic tasks – working out who had passed or failed, turning id codes into email addresses, etc.
Teachers are busy people. I knew that I had to give them something useful, something real, and something that they could use, otherwise they would not be interested, and would not bother with programming after the workshop. They needed to see an immediate purpose for what I was teaching them.
Interestingly, that approach with high school students is surprisingly rare. In my year 11 Computer Science course we collaborate with scientists on real projects for our capstone Computational Science project. We work with the scientists to determine their data processing needs, and produce software that, in the best cases, can radically improve the scientists’ research.
My students get to choose their own path through the data, and they have the opportunity to run their ideas past our collaborators to make sure they are producing something really useful. This means that my students know that the skills they are learning are fundamentally useful. They know that if they work hard enough and produce software that is worth using, they can actually change the world.
Some students, naturally enough, see it simply as a school project. They produce work that meets enough of the criteria to get the marks they want, and then they walk away. But every year I have groups of students who continue working on their projects long after the assignment is done and dusted. They collaborate with our project partners and see their work through to completion, so that they actually do get to change the world.
All of the programming skills we teach throughout the year build towards this project, and as we go along we make as many of the classroom practice tasks real projects as well. Small data projects that benefit the school. Data cleaning projects that make life easier for our project partners, like detecting and removing duplicate entries from a spreadsheet. Projects they can see the point of.
Even the kids who just do what they have to do to pass the project are working with real data and learning that it can be messy, flawed, and hard to work with. This is not a simple, artificially constructed spreadsheet with clean, well formed data that will produce known results. For the most part the data we work with has never been analysed – or has only been analysed in a few simple ways that are built into the software our partners work with.
The simplest graph of two columns of data could produce outcomes that were previously unknown. We’ve worked on data about the dolphins in Port Phillip Bay. On Molecular Biology and cancer research. We’ve worked with Earthwatch Australia on their Climatewatch data. We’ve worked on neuroscience data and a whole range of experimental results.
None of these projects have a predictable result. We don’t know in advance what the students will find, or precisely what the software they will write needs to do. There’s a whole range of skills in these computational science projects, from understanding the field they are working in and working out our partners’ needs, through to designing, building and testing their software.
Suddenly the purpose of our usability unit, problem specifications, documentation, and proper testing become abundantly clear. Students get to see the value of what we learn, and to apply it directly to a real project with tangible outcomes.
Years ago when I was working on my PhD in Computer Science Education it became really obvious to me that the single most important factor in learning to code was motivation, and it was very easy to kill. That’s why I teach Python to my year 11s – because as well as being a clean and easy to learn syntax, it’s a fantastic language for data processing, and increasingly used in scientific research. These are skills they can apply immediately, in the context of our course and beyond.
It’s really hard to motivate kids to learn skills they might use in some vaguely related way years down the track. But skills they can use today to produce something real? They’re right into that. Oddly enough, so am I!
Recent Posts: Exploring life, parenting, and social justice
Me on TwitterMy Tweets