It was around this time last year I began to fret a little. The novelty of the summer holidays had started to wear off and the fear began to settle in. After a couple of years of teaching ICT, I was getting a little bored of churning out coursework and was looking for a new challenge that would really make my students think. Don't get me wrong, ICT has its place but I felt like students were missing out by not getting a mix of computer science and ICT. So I came up with a plan to start delivering computing from September 2012.
Having previously studied internet technology at university, taught ICT for almost four years and being a bit of a geek, I felt quite secure in my subject knowledge for computing but was not feeling confident with my programming skills.
The first thing thing I did was sign up to Codeacademy – a site where users can learn and teach code for free – and began working through the Python exercises. I chose Python as my coding language of choice because it is quite close to written English and there were plenty of support materials online.
After a few weeks of spending 30 to 45 minutes a day working through the Python tutorials (little and often), I decided to attempt one of the GCSE programming projects and immediately became stuck. Online tutorial sites are great for learning the syntax of a programming language but don't necessarily teach you to solve problems. This is where computational thinking comes in.
After a call for help on Twitter, I quickly found myself being tutored through the problem solving side of things via Skype and email by two amazing computer scientists @codeboom and @colinthemathmo. Problem solving is the essence of computer science; using a computer as a tool to solve real world problems. The only way to get good at problem solving is practice.
My lower-ability students felt success quicker and gained in confidence by solving relatively simple problems, whereas the higher-ability students came across something that they didn't always get right first time. The problem-solving lessons provided a great platform for differentiation by task and it was amazing to see the students take a step back and really think about the problem and plan out a solution.
One of the tasks I set students was to create a program, using Python, that takes two numbers, multiplies them together and then prints the answer. At the higher end, students had to create a calculator that gave users options and did different things depending on what options the user chose. These problems were tailored to what we had covered in class; topics such as variables, data types, selection and so on. Students had to design a solution on paper, code it and then evaluate their solution.