The importance of practical programming

In their first blog, based on the white paper, Practical Programming in Computing Education, the NCCE Academic Board explain why practical programming experience is a vitally important part of any computing education.

Practical programming is a vitally important part of any computing education, one that is both fundamental and useful in its own right, as well as fantastic pedagogy for learning computing. The recent removal of the non-examined assessment from GCSE Computer Science is an opportunity to introduce far more exciting and relevant practical work than was previously possible. We are calling on computing teachers to ensure that practical programming, in diverse forms, is deeply integrated into your schemes of work, throughout all key stages.

In 2014, the new English computing curriculum re-envisioned computing as a foundational subject, rooted in a body of knowledge and ideas rather than a vocational equivalent. Our vision for Teach Computing (a 7-minute video) paints the big picture, narrating how this seismic change to computing as a school subject underlies everything the NCCE does.

A danger is that the pendulum swings too far - that we come to see computing as a mainly theoretical discipline, divorced from the practical activities that animate it, especially programming. That is a perception which would be a tragic betrayal of the vision.

The truth is that practical programming is central to a good education in computing. There are three distinct reasons for embedding practical programming deeply into our computing education.

Firstly, programming is intrinsic to computing. The importance of programming is explicit in the second of the four aims of the National Curriculum for computing: All pupils can analyse problems in computational terms and have repeated practical experience of writing computer programs to solve such problems.

Why is this? Programing is not just a means to an end: it is a fundamental part of the subject itself - just as music performance is to music, and writing is to English. A computing education without programming would be a dry, eviscerated husk, lacking not just motivation and enjoyment but intrinsic content. The core purpose of the subject is to build things that change the way we live, work and play, so actually writing programs is key.

Second, programming skills in computing are exceptionally useful throughout a young person’s life - not just if they become a software developer. In a world in which digital technology increasingly pervades our lives, an understanding of how that technology is programmed, and the ability to write elementary programs, gives our young people agency: it allows them to be empowered actors, rather than passive and powerless consumers.  As Rushkoff's book title says, the choice is "Program or be programmed".

Moreover, programming projects develop many “soft skills” that are highly prized by employers including teamwork, planning, logical thinking, communication skills, and resilience.

Lastly, programming work is essential pedagogy. "Practical programming" is much more than "write a program for task X, starting from a blank sheet of paper". It includes understanding an existing program, predicting its behaviour, modifying it, explaining it to another person, devising tests, identifying bugs, forming a hypothesis about what is wrong, performing experiments that confirm or refute that hypothesis, and so on. These practical activities bring together the theoretical knowledge students gain in class, and consolidate and integrate their understanding. Moreover, the immediate feedback from a running program can be incredibly motivating.

All of the above applies at every Key Stage, but there is a particular opportunity and danger at Key Stage 4. In 2019, Ofqual removed non-examined assessments from the grade of GCSE Computer Science. Many schools read this as a signal that practical work is unimportant. But that is completely backwards! The real message is that programming work is too important to be conducted in 20-hour hermetically-controlled assessments – it is hard to imagine a less authentic or motivating setting. Instead, freed from the onerous demands of formally-assessed work, schools can now design imaginative, creative, and ambitious programming projects, incorporating collaboration and teamwork, connections to “live” data, industrial mentors, and iterative review. Such projects offer a far richer learning experience than was previously possible.

Our call to action is this:

  • Computing subject leaders and teachers: ensure that practical programming is deeply integrated into your scheme of work, in diverse forms ranging from program comprehension, through short exercises, up to capstone projects.
  • Senior leaders: actively support your computing department to make rich, creative, practical programming a priority in your computing timetable, and your resourcing, at every Key Stage.

You can find our full white paper Practical Programming in Computing Education on the Impact, evaluation, and research page of our website. In subsequent blog posts, we will take each chapter of the white paper and invite your comments on it.

Please share thoughts about the role of practical programming in the taught curriculum with us and your colleagues at CAS. We need a conversation, not a monologue! You can join the discussion via this forum on the CAS website or by emailing us at info@teachcomputing.org.

What is the NCCE Academic Board?

Our Academic Board provides oversight and guidance for the work of the NCCE, ensuring that quality and rigour, informed by evidence from research, are at the heart of the NCCE's professional development programmes. The members, and the authors of this post, are: