Five things to know about coding in school
Teaching something new can be daunting and for many primary teachers, this fear of the unknown certainly applies when teaching coding. Alien concepts such as debugging, abstraction and decomposition are part of what is referred to as computational thinking. Even hearing these unfamiliar terms is enough to take many of us out of our comfort zone. However, the good news is that as a primary teacher, you are used to constantly learning new topics and the even better news is that many of these terms are simply synonyms for methods that you already use in your teaching. For example, debugging is a method of problem solving and decomposition is simply breaking a problem down into manageable chunks. Teachers can encourage pupils to use LEGO® Education WeDo 2.0, a hands-on science and computing solution, to explore, create and share their scientific discoveries as they build, program and modify projects. Once you realise that the language of coding is only a superficial barrier to your teaching of the subject, there is no real reason why coding can’t become one of your favourite topics to teach.
Here are my five top tips to consider when teaching coding in primary schools:
Teaching in a computer room doesn’t mean you can’t use paper. Make planning a key part of your lessons.
When you begin to teach your pupils to code, it is vital that they are being taught the importance of designing and planning their code beforehand. This design stage is probably the most crucial; it is at this stage that pupils carefully consider exactly what they want their program to do and how the computer will carry out these actions. The better the planning, the better the end-result. I encourage my pupils to write pseudocode (code in human language) and to annotate with code from the program if they know how to. At a basic level, writing sentences that you can scaffold by providing prompts from the coding language allows all pupils to begin to plan for success. As pupils use the software, I encourage them to annotate their planning with any changes or updates, viewing their initial planning and written work as a working document. Most importantly, I don’t want the fact that pupils don’t know all the capabilities of a program to hold back their ideas, thought processes and imagination.
Pick a language and build up skills yourself
With so many coding languages on offer, it is easy to feel under pressure to expose pupils to as many languages as possible. I would argue that selecting one or two coding languages with good capability and scope for progression is far better than forcing numerous coding environments upon your pupils that they would be unlikely to experience in any real depth. After all, you need to become proficient yourself at the coding language you choose and this is far more practical by choosing fewer to focus on. As a primary teacher, you will be used to learning new topics in order to deliver them effectively. You wouldn’t attempt to teach your pupils about prime numbers without being confident yourself in what they were; teaching coding is no different. Fortunately, there are plenty of websites and free CPD opportunities are available to help teachers build up their skills so that they are competent in their delivery of coding.
Don’t assume children are experts. You are the teacher
One common mistake in computing generally is to assume that the children know more than you do. While there may be aspects of coding where it seems that some pupils are more advanced than you, it would be wrong to rely solely upon their knowledge. While they may be knowledgeable, they are not better at teaching and delivering the subject. You have the skills developed over years of training and teaching to help to develop and progress the learning of your pupils. Can they explain why something is happening or how the code works? Can they explain the changes they would make to the code to create a different outcome? Developing the computational thinking of your pupils is your job; you need to point them in the right direction, give them prompts and support to develop their thinking so that they can solve more complex problems. Those pupils who begin at an initially higher level than others but choose not to act upon your advice and scaffolds are unlikely to progress at the rate they could.
Structure lessons clearly allowing opportunities for everyone to progress.
When teaching coding, lessons need to be structured so that all pupils are able to make progress. While ‘tinkering’ with new software is a great way to begin to get to grips with it, setting specific tasks designed to acquire particular skills is a valuable use of your lesson time. One way that is effective in ensuring that all pupils acquire the same initial skills is to set time limits for mini tasks and to display example code on the board that may help get your pupils started. For those pupils who will easily achieve the initial task, provide extension coding tasks that will give their code more capability. This method of teaching should mean that by the end of a lesson, all pupils have achieved the bare minimum of the tasks, which is still a functional game or program, whilst others have far exceeded that. Another technique that may be useful when pupils are further along in their coding journey is ‘live-coding’ where the teacher spends part of the lesson modelling by coding a similar task themselves. This is displayed on the board and as pupils work, they can refer to the code shown and apply it to their own program where necessary. This serves as a helpful prompt and means that pupils can feel more confident in their own coding ability. At the same time, they can recognise alternative solutions to the problem, perhaps identifying different blocks or code that may help them in future coding.
Ensure your pupils know how to ask for help effectively.
A common trap you will want to avoid falling into is doing all your pupils’ work for them when they complain of their code ‘not working’. The code does not do what they want it to do because of an error they have made and it is their responsibility to use their range of computational thinking skills to work back through their code before locating and fixing any errors. If you spot their error and fix it, the pupils are not gaining from that experience. Instead, encourage your pupils to debug their code themselves. Firstly, what should happen when the code is run? What does happen instead? As a starting point, this should force pupils to rethink their code, pinpoint where the error must be occurring and begin to identify the problem themselves. You could provide your class with a list of questions to answer or sentence starters to help them articulate the problem they have encountered. For many pupils, simply beginning this thought process so explicitly will lead them to the solution.
Teaching coding is exciting because it is a constant challenge. It provides opportunities to embed so many valuable skills including resilience and perseverance. There are constantly mistakes to be made and problems to overcome and it is this intense struggle followed by the satisfaction that follows which makes it so rewarding.
Siobhán Morgan leads Computer Science at Exeter Junior School and is a CAS Master Teacher. She tweets at @koduclassroom