Teaching computing

Feb 09, 2015

Miles Berry

The new computing programmes of study are in place and initiatives such Computing At School’s Network of Excellence, Barefoot Computing and Code Club Pro have been working hard to equip primary computing teachers with the subject knowledge they need to teach these with confidence. Now seems like a good time to turn our attention from what to teach to the question of how to teach.

Some would argue that computing is so different from ICT that we need to develop an entirely new approach to teaching the subject. But at primary level, I’m far from convinced this is the case: tried and tested methods such as open-ended creative projects and collaborative group work seem just as relevant to the new curriculum as they were to the old.

When Ofsted last did subject survey visits, albeit of ICT, they seemed quite content with primary teaching, seeing this as good or better in nearly two thirds of the schools they visited – room for improvement, perhaps, but not a massive upheaval. With this in mind, it’s worth looking back over the most relevant educational theory, and some of the academic research in the field, to see what lessons can be learnt for primary computing pedagogy.

In theory…

In terms of educational theories, Piaget’s work on constructivism remains highly relevant to computing – where much learning takes place as pupils play, explore or experiment independently. Children gradually build their mental models of how computation works. Much of the time, new experiences are assimilated into existing ways of thinking and approaching problems. Only when children are confronted with unexpected results do they have to change their model completely. This, and its contribution to a growth mindset, is one of the reasons why debugging is such an important part of computing education – it forces children to question their preconceptions.

Seymour Papert was one of the earliest advocates for teaching pupils to program, not merely as a way of acquiring mastery over technology, but as a route to helping young learners understand some of the deepest ideas of mathematics and philosophy. He believed the best way for pupils to build mental models was to be consciously engaged in making something (ideally to show others) – a process he called constructionism. His ideas have directly influenced the development of languages such as Logo and Scratch, and much excellent classroom practice, to this day.

Lev Vygotsky’s notion of social constructivism remains influential, recognising that pupils develop their understanding through language as they draw on the insights and experiences of others. In computing lessons, this can be facilitated through approaches such as collaborative group work and paired programming, which has the advantage of mirroring how software and digital content is developed in the real world. And don’t assume that all lessons need to include some work at a computer – there are plenty of opportunities for pupils to learn through ‘unplugged’ approaches such as those suggested by CS Unplugged and Barefoot Computing.

Primary practice seems to have favoured these sorts of discovery approaches, particularly for more creative subjects, and many who currently work in academic computer science or the software industry admit to being largely self-taught. That said, for some content, a convincing argument can be made for drawing on direct instruction, especially when it concerns troublesome ideas pupils are unlikely to discover for themselves. This content might include the ‘threshold concepts’ of computing: those aspects of the subject that, when seen, change the way you think. Things which, once learnt, cannot be easily forgotten. I’d include concepts such as abstraction and algorithms here: these are central to the discipline of computer science: they help make sense of so much else in computing and do help a lot for writing good code. I’d also include coding ideas like variables – whilst some pupils might discover these independently, for most they’ll need to be explained, with lots of examples if pupils are to make use of these without too many misconceptions.

What research tell us

Most of the existing academic research in computing education relates to undergraduates on computer science courses, or it dates back to the 1980s when interest in Logo first took off in schools. Some of these studies are relevant to modern primary practice, but there’s a need for more recent evidence of what works in KS1 and KS2 computing.

General academic research into effective classroom practice, however, suggests a number of approaches that can have a big impact on all aspects of work in schools – including computing lessons. Some of the high-impact interventions identified for the Education Endowment Foundation’s ‘toolkit’, for example, seem particularly relevant:

  • The EEF identifies feedback as a low cost teaching tool that has a high impact. And in programming, there’s a fairly direct feedback loop between what a pupil does at the keyboard and whether his or her code runs. Blogging platforms and the Scratch community website are also examples of places where pupils can discuss their work with teachers and peers.
  • Recording comments in blog posts, in addition to sharing what they have produced, can help children to reflect on the learning process. Pupils should also have the opportunity to learn from their mistakes, which brings us again to the importance of debugging code.
  • Peer tutoring, another practice favoured by the EEF, is relatively easy to build into lessons on computing. By programming in pairs and taking part in group-based activities, pupils can support one another’s learning, rather than merely completing a set task.

John Hattie’s research makes a number of observations about the use of digital technology in education, some of which are directly relevant to teaching computing:

  • It does seem that a teacher’s technical ability with computers, and her subject knowledge, does matter when it comes to teaching computing.
  • Children do better when multiple opportunities for learning are provided and when feedback is optimised. Again, we should let pupils get an immediate response to their work as they try to execute and debug the code they write – and encourage them to seek feedback from the teacher, classmates and others online.
  • Hattie found the use of computers is more effective when the student, not the teacher, is in control of learning. This suggests that open-ended tasks and some ‘discovery’ methods may well produce better results when applied to digital technology.

There’s fairly clear evidence that much of what has characterised good ICT teaching in the past will continue to be useful when it comes to teaching primary computing. That said, I think the pragmatic teacher will want to draw on a range of these approaches, and learn for herself what works in her particular context, for a particular topic, and with a particular group of pupils.

The advent of the new curriculum provides us with an excellent opportunity to step back and reflect on how effective our practice is in helping pupils acquire this new body of understanding knowledge and skills. It’s never been easier, and there’s never been a better time, to engage in some action research about what works. The EEF have a great guide to conducting your own DIY evaluations, CAS’s computer science education research discussion has a number of interesting themes to explore, and there are many as yet unresolved questions to investigate, for example: is programming the best way to develop computational thinking? Will teaching children to program help with maths and English SATs? Will more choose to carry on coding outside of school?

Programming pedagogy

  1. Let pupils tinker – there’s so much they can learn through exploring and experimenting.
  2. Get pupils making – computing is a creative discipline, and writing code, editing video or making presentations are great ways to learn more about it.
  3. Encourage collaboration – real software gets written by teams, and pupils can learn so much from working alongside others. Just remember to keep the focus on learning, not the product.
  4. Focus on meaningful feedback – get pupils to debug their own code, review one another’s work critically, and to act on the feedback they get from you and their peers.
  5. It’s not all about skills – return regularly to the golden thread of computational thinking that runs through the programmes of study.
  6. Help children believe in themselves – whilst programming is hard, convince your pupils that if they work hard (and you explain ideas well) they’ll get there in the end.

Originally published in the January edition of Teach Primary, reproduced here by permission. © all rights reserved.