Tuesday 4 October 2016

New Book on Teaching Computing in Secondary Schools

UPDATE: The book is available to order HERE 

The blog has been a bit quiet over the past 12 months as I've been working on a new book entitled "Teaching Computing in Secondary Schools". It is due to be published in autumn 2017 by Routledge and a sample extract is below.

I will also be presenting on curriculum planning in computing at the Computer Science in action conference on November 17th. The event is hosted by The Guardian Education Centre and Further details here.

Wednesday 27 July 2016

5 mistakes I made when teaching Computing - Ten Year Review

5 mistakes I made when teaching Computing

This article originally appeared in Terry Freedman's Digital Education Newsletter in July 2016 and was published to his site in October 2016 . I was invited to write an article to discuss my experiences of teaching Computing over the last ten years. I am grateful to Terry Freedman for his editorial advice and for providing a platform for the original article. It is reproduced below as it appeared in the Digital Education Newsletter.

“ Nothing fails like success because we don’t learn from it. We learn only from failure” –Kenneth Boulding

Digging in

Looking back on the last ten years, I’ve learnt a significant amount about teaching and pedagogy. Based on Kenneth Boulding’s statement, this implies that I’ve failed on numerous occasions whilst teaching Computing. This is true and these mistakes are something I’ve learnt to embrace and reflect on somewhat obsessively.

Doug Lemov, in his brilliant book Teach Like a Champion* covers a technique called “Excavate Error”. He encourages teachers to “Dig into errors, studying them efficiently and effectively, to better understand where students struggle and how you can best address those points”. I think there’s great mileage in this technique, not only to help our students but also to help ourselves as reflective teachers. In this article, I will look at five mistakes I made whilst teaching Computing.

Mistake 1: Making learning easy and effortless

During my first year of teacher training, I visited many classrooms. At the time, I was lucky to be in a school with more than ten Advanced Skills Teachers (ASTs). These were excellent teachers with a subject specialism, who had chosen to continue to develop their teaching in the classroom, rather than pursue pastoral or managerial leadership roles in school. Needless to say, these teachers had impeccable behaviour in their classrooms and the students seemed to be progressing at an impressive rate; naturally then they possessed a somewhat revered status.

I remember going into one Religious Education class run by one of the school’s ASTs, Joanna. The class was studying Buddhism and in order to get them to empathise with Buddhist meditation, she asked them all to close their eyes and for five minutes, the students meditated in silence. I had just come from a lesson in which it took more than five minutes just to get my students logged on and facing the board! The students then returned to the present moment and wrote in silence for 10 minutes about their experience and why they thought Buddhists chose to meditate several times a day. I was impressed and for many years, I aspired to be just like Joanna, running a silent classroom where everyone was “working hard”.

To facilitate this hard work, I thought that I should help my students by making the challenging tasks easier. By scaffolding all the tasks so that they could complete them effortlessly. I held the false belief that effortless perfection was what a teacher should be aiming for. The reason this was such a big mistake is that quiet classrooms are a very poor proxy for learning. Graham Nuthall discusses the challenges of knowing what students have learnt in his book, The hidden lives of learners*. Dylan Wiliam would argue (based on a course I attended) that a quiet classroom could simply be one where nobody is being stretched, where students are bored or where students are afraid of taking risks. Paul Black and Dylan Wiliam’s work on formative assessment and assessment for learning in Inside the Black Box* and, especially, Embedded Formative Assessment*, tells us that the best proxies for learning need to make the learning visible. A few solutions that they suggest are using mini whiteboards, exit tickets and traffic lights to quickly see what the students are thinking.

Mistake 2: Should learning be easy?

The second mistake I made was thinking that learning should be easy. The Sutton Trust commissioned Coe et al to perform research on What Makes Great Teaching and found that:

“One paradoxical finding is that some approaches that may appear to make learning harder in the short term, and less satisfying for learners, actually result in better long-term retention.”

Mistake 3: Too helpful by far?

The third mistake I made was scaffolding the learning for students with Low Prior Attainment (LPA)  and then allowing them to become reliant on the scaffold for the remainder of the year. I remember printing out step-by-step worksheets for many students whilst teaching Spreadsheets, Databases and Control and the students would become reliant on these worksheets. Every lesson, students would ask for the worksheet, without trying the task first. David Didau and Oli Knight advise that in order to develop independent learners, scaffolding should only be provided if there is a plan for taking this away later on in the unit of work.

Moving on from there, I now accept that lessons and learning may not always be effortless and smooth. I accept that students might struggle sometimes. Many concepts in Computing are quite abstract. Explaining the difference between a For Loop and a While Loop for example or explaining the use of Master Slides in presentations are both quite challenging concepts to grasp. However, I have taught my students to embrace the challenges, struggles, setbacks and mistakes; it shows that we are trying hard and therefore learning.

To make my students more independent, I ask them to use the SPOT framework:

•        Self – Try solving the problem independently

•        Peer – Ask your peers sat near you

•        Other – Research the solution using other resources e.g. Online, video tutorials, worksheets and notes

•        Teacher – Lastly ask your teacher.

Other teachers use the 3B4Me model which is very similar, going through the Brain, Buddy, Book and lastly Boss.
This helps students become more independent and whilst the scaffolding might still be provided through a video tutorial which can be made using free software such as Open Broadcaster Software (OBS),  these tutorials or worksheets are the third option, only after they have tried solving a problem themselves and also attempted to get help from their peers. Examples of YouTube tutorials that I use in my lessons can be found here.

The Expert’s Trap

Noel Burch developed a model citing the four stages of conscious competence. 
Via @ pgballey on Flickr Creative Commons Attribution License: https://www.flickr.com/photos/pgbailey/6429568067

For many Computing teachers, they are teaching skills which they are already unconsciously competent. At this level, we might be considered experts and the expert’s trap is to attempt to teach something without explaining it fully. Collins et al. wrote a paper about Cognitive Apprenticeship in 1991, where they state the importance of making the thinking visible by thinking out loud.

In applying this to Computing, many of the tasks we do and know are implicit. An example of this is closing a tag in HTML as soon as we open it. However, unless we make these implicit habits explicit, our students will be lost as they will not be able to make the invisible conceptual leap that exists in the minds of their expert teacher.

Mark Guzdial, Professor in the College of Computing at Georgia Institute of Technology suggests that we should also teach the misconceptions. Predict misconceptions, test students on these misconceptions and teach them where they are likely to fail. This way, students can learn from our mistakes and we can minimise the number common mistakes that students make when learning these skills. He references Phillip Sadler: http://news.harvard.edu/gazette/story/2013/04/understanding-student-weaknesses/ 
“If teachers are to help students change their incorrect beliefs, they first need to know what those are…The results showed that students’ scores showed the most improvement when teachers were able to predict their students’ wrong answers.” -- Philip Sadler

In Computing lessons, I now try my best to model not only a skill but also my thinking. Thinking aloud feels very unnatural at first, but the gains are immediate and will be apparent in all lessons where you model the new skills well. Frequently, when I reflect on lessons which went less well, I realise that there was an issue with my modelling in that I forgot to think out loud and my students were lost in the silence of clicking and demonstrating.


The media frequently use the terms “Computing”, “Computer Science”, “Coding” and “Programming” interchangeably and most headlines about the curriculum reforms in the UK have used these words synonymously. This distorts the reality that programming is a skill which all Computer Science students will need to learn, but it is not the only skill which is required in Computing. Programming pedagogy is an important part of a teacher’s Pedagogical Content Knowledge. However, equally important are other key software applications and the theoretical subject knowledge which the Computing curriculum is built on.

Mistake 4: An emphasis on the programming language

When I first started teaching at my current school, I focused a lot of time and energy in teaching students how to program using Python. That was the programming language that they would eventually use for their GCSE controlled assessment which would make up 60% of their GCSE grade (for non-Brits: GCSE is the General Certificate of Secondary Education, which is usually taken in several subjects at 16 years of age. It is a school-leaving certificate, or a passport to further study).

This decision was somewhat shortsighted, because what I realised is that the programming language is not the most important thing, neither is syntax. As I reflected back on two years of teaching programming with Python, I realised that the key threshold for learning how to program and to pull students out of liminality (transitional/borderline stage) is in teaching the students the importance of logical thinking. The key to ensuring that a program works (regardless of the programming language) is the logic and the Computational Thinking. Teaching students the process of how to break down a real-world problem down into a problem that can be computed is the key to successful programming. This is where the focus should be when teaching students how to program.

Mistake 5: Not seeing the bigger picture

However, this in itself only solves part of the problem. In 2015, the qualifications regulator for England, Ofqual announced a curriculum reform which resulted in all Computer Science Controlled Assessment from 2017 onwards to be worth only 20% of the grade. Fortunately, by then I had realised that I should be focusing on other skills, concepts and knowledge besides Computing and had started to build a more-balanced curriculum map.

In designing a Computing curriculum, I have learnt not to focus too much on trends and exam boards. But instead to produce a more-balanced curriculum which will provide students with the ability to use digital technology creatively and independently. There is still a need to plan backwards from terminal exams, however the way in which we do this has to be measured and has to ensure sufficient spacing and interleaving of content. Medium term planning is itself a significant area which cannot be covered in sufficient detail in this post. However, it is something which I am happy to advise on by email or in-person. I will also be dedicating a chapter of my upcoming book to the topic.


To close, I would encourage all teachers to keep reflecting on their teaching, to embrace and learn from the setbacks, challenges and mistakes that we encounter every day. I’d also like to thank all the teachers that have helped me become a better Computing teacher. There are countless teachers within the Computing at Schools Network. However those that deserve a special mention (in alphabetical order) are the following. The links given are for their Twitter profiles.:

•        David Batty

•        Danny Brown

•        Simon Brown

•        Mark Clarkson

•        Dan Copeman

•        David Didau.

•        Corinne Flett

•        Mark Guzdial

•        Elizabeth Hidson

•        Peter Kemp

•        Joe Kirby

•        Oli Knight

•        Doug Lemov

•        Giles Niklaus

•        Simon Peyton Jones

•        Dylan Wiliam

•        Tom Wilkinson

About William Lau

William Lau is the Head of Computing at Greenwich Free School. Having trained through the Teach First program in 2006, he has taught Computing from Key Stages 1 through to 5 in two London schools and in an international school in Seychelles. William is currently writing a book on Computing education and pedagogy.
To enjoy further insights from William, follow him on Twitter: William Lau.

* Links marked with an asterisk are Amazon affiliate links.