Coding became part of the national curriculum in England in 2014 as part of the new Computing subject that replaced ICT. Coding is only one part of this subject that covers other aspects of computing too. In this article, I'll look at how coding fits in the key stages from 2 to 4, covering children between the ages of 7 and 16. (I'll be focusing on the National Curriculum for England in this article.)
The recognition that coding is an important "new" subject that our children should learn at school is very welcome. This is a trend that happened almost everywhere in the world over the past decade, with the UK being one of the first countries to include coding fully in the curriculum. Indeed, coding benefits other academic subjects too.
However, when we dig a bit deeper into the curriculum and how it's interpreted and implemented, we get a more complex picture with some issues that are difficult to resolve.
The computing curriculum for Key Stages 1-4 is four and a half pages long. Coding is only a part of that as other computing topics are included. English, maths and science, as a comparison, have 113, 56, and 47 pages respectively. It's not just the number of words in the curriculum that matter—some other subjects such as history and geography also don't have very long documents—but it's the actual content.
Let's break down what the national curriculum says for coding for each of the Key Stages from 2 to 4. I'll look into what this actually means and how it's interpreted and implemented.
Key Stage 2
The curriculum lists seven bullet points for students between the ages of 7 and 11 in Key Stage 2. Three of these refer to coding. Let's have a look at what's expected of these children when it comes to coding.
"design, write and debug programs that accomplish specific goals, including controlling or simulating physical systems; solve problems by decomposing them into smaller parts" (Key Stage 2 Computing Curriculum for England)
"use sequence, selection, and repetition in programs; work with variables and various forms of input and output" (Key Stage 2 Computing Curriculum for England)
"use logical reasoning to explain how some simple algorithms work and to detect and correct errors in algorithms and programs" (Key Stage 2 Computing Curriculum for England)
These are very broad and general points. Designing, writing and debugging programs is the minimum requirement for any coding, as is breaking down a problem into smaller parts. We have more specifics in the second point, which talks about key topics in coding such as repetition, sequences and variables. Again, these are the most basic of tools in coding. You could argue that it's impossible to write even the simplest of computer programs without these concepts.
There is nothing wrong with these points. Indeed they are all very important aspects of coding. However, they are very broad and general objectives that can be interpreted in any manner. This opens the door for different schools covering coding in very different ways.
Using children-specific platforms such as Scratch instead of real-world coding languages is by far the most common way of ticking the boxes for these age groups. However, children from the age of 7 can start learning coding using a language such as Python, which is one of the most popular real-world languages used by professional programmers worldwide.
The issue with teaching a real coding language is that it's difficult to teach as it requires a significant level of coding expertise and experience to teach even simple coding concepts. Platforms designed specifically for children, such as Scratch, bypass this problem.
There is also a reference to controlling physical systems in the curriculum. This is an important concept in coding as a real-word use of computer programs is to drive hardware. We've seen a proliferation of children-specific robots. This technology 'hides' a lot of the coding within the software that comes with the robots. These gadgets make satisfying the curriculum requirement a bit too easy. Children can control robots with a handful of simple commands that are removed from the actual coding that's needed 'behind the scenes'.
I'll get back at all these points in the conclusion after looking at the next two Key Stages.
Key Stage 3
These are students between the ages of 11-14. Of the nine bullet points in this section, four refer to coding. The fourth one could indeed be covered without the need for coding, but I'll include it as one of the coding bullet points here:
"design, use and evaluate computational abstractions that model the state and behaviour of real-world problems and physical systems" (Key Stage 3 Computing Curriculum for England)
"understand several key algorithms that reflect computational thinking [for example, ones for sorting and searching]; use logical reasoning to compare the utility of alternative algorithms for the same problem" (Key Stage 3 Computing Curriculum for England)
"use 2 or more programming languages, at least one of which is textual, to solve a variety of computational problems; make appropriate use of data structures [for example, lists, tables or arrays]; design and develop modular programs that use procedures or functions" (Key Stage 3 Computing Curriculum for England)
"understand simple Boolean logic [for example, AND, OR and NOT] and some of its uses in circuits and programming; understand how numbers can be represented in binary, and be able to carry out simple operations on binary numbers [for example, binary addition, and conversion between binary and decimal]" (Key Stage 3 Computing Curriculum for England)
Let's start with the first two points. These are important general concepts, but the only specific mention we get is for two algorithms that are listed as examples. Computational thinking is central to all of coding. You cannot write a computer program without doing computational thinking. It isn't easy to see how these bullet points provide guidance for what should be taught. And we see this in the great disparity of how coding is taught in many schools. Some do a lot more coding than others. But all are fulfilling the curriculum.
The third point starts to be a bit more prescriptive. Students must now use at least one textual language. This is great news as students will finally start learning a real language. But another way this point is interpreted is that teachers can still teach Scratch as long as a bit of Python is also introduced. How much of the coding should be done using a textual language such as Python? How much should be in a children-specific platform such as Scratch? That's up to individual schools to decide. Any many decide to focus mostly on Scratch and similar platforms for most of their coding, with a bit of very basic Python to satisfy the need for using a textual language.
It is welcome that students are required to start to write more complex programs by using functions and procedures. This is an important structure that students need to learn early on.
Key Stage 4
For those students who do not opt for a Computing GCSE, the national curriculum doesn't add much to what students have already learnt in Key Stage 3. The only bullet point that comes close to covering coding is the following one:
"develop and apply their analytic, problem-solving, design, and computational thinking skills" (Key Stage 4 Computing Curriculum for England)
How complex should the problems students solve be? How long should the programs they write be? What specific coding structures should they know about? It isn't easy to know how much coding students are meant to know.
Is this a problem with the computing curriculum or just the reality that a curriculum cannot be too prescriptive? I've posted the links to other curricula above. It may be unfair to compare with core subjects such as English and maths. But here's one of the bullet points from the geography curriculum for key stage 3, as a comparison:
"understand, through the use of detailed place-based exemplars at a variety of scales, the key processes in:
physical geography relating to: geological timescales and plate tectonics; rocks, weathering and soils; weather and climate, including the change in climate from the Ice Age to the present; and glaciation, hydrology and coasts
human geography relating to: population and urbanisation; international development; economic activity in the primary, secondary, tertiary and quaternary sectors; and the use of natural resources"
A quick glance shows that other subjects have more detail and focus in what is required from students and teachers. The broad statements relating to coding lead to a huge disparity in how schools teach coding.
Why is this the case? The coding curriculum cannot be more specific than this, as schools simply do not have the expertise to teach coding in a thorough and engaging way. This is not a reflection on schools. It's the reality brought about by the fact that coding is a difficult subject to teach. It's easy to teach using children-specific platforms that do not have a lot in common with real-world coding languages. It's also easy to teach coding using simple programs that are very prescriptive, asking students not to stray off the required path.
What's hard is to teach coding using more complex programs with a language such as Python, and allowing students to be creative and try things out.
There is no easy solution to this problem. Those with high levels of coding expertise rarely go int