Recently I've seen posts in teaching fora asking for resources to support the delivery, at KS3, of topics such as animation, "app development" and "physical computing". They're not explicitly in the National Curriculum, but that's not a problem - I've always thought that the National Curriculum was the core of the subject, the minimum that you should cover.
Last month, of course, we also had OCR GCSE Computer Science paper 2. One of the main complaints appeared to be that there was a question asking students to compare bubble and insertion sorts and that while the specification requires students to...
...there is no explicit mention of comparing the algorithms. It's also quite common for me to mention something that I've taught to GCSE classes only to get the response "Why are you teaching that? It's not in the specification."
If you were teaching students about different ways to do something, wouldn't you naturally compare them? The first thing I did when thinking about how to teach sorting algorithms is make a page that does exactly that. Students can also see that my merge-sort game looks unlike the bubble- and insertion-sort games, so why wouldn't you mention the difference?
Why are teachers happy to go beyond the National Curriculum at KS3, then feel that they have to follow GCSE specifications to the letter and not teach anything that isn't explicitly mentioned?
Earlier in the year I read that Bill Gates reads more widely if he wants to learn something and remember it well. That makes sense to me. Books like Daniel Willingham's Why Don't Students Like School? tell us that we need knowledge to make sense of what we read and to acquire new knowledge. In fact, reading itself is a test of knowledge.
If you look at the CfEM Mastery Principles for improving success in Maths, number 3 is Prioritise curriculum coherence and connections. It seems quite possible that adding additional information to a course can help to make those connections and improve understanding. Might the comparison of sorting algorithms help students to remember the differences, and therefore how each works individually?
Another teacher recently expressed surprise that I tell my GCSE students about half-adders - apparently it's not in the specification until A level. A half-adder is just a logic circuit, though, and logic circuits are part of the GCSE course. The half-adder performs binary addition - also in the specification. The purpose of the Arithmetic Logic Unit (ALU) is required knowledge too. Logic circuits, binary addition and CPUs might initially appear to be discrete items of knowledge, but showing students the half-adder links them together and shows how the addition is performed by the hardware. It's not explicitly mentioned in the specific, but nor is there anything that suggests you shouldn't mention it.
Programming is an interesting area of the curriculum because it's both a practical skill and a theoretical topic about which the students could be asked questions in an exam. Some skills, e.g. modular arithmetic, are both in the specification and useful in practical tasks.
Again, I treat the specification as the bare minimum that I should be teaching, and going beyond that with our programming practice tasks makes the code snippets and algorithms in the exam papers seem pretty straightforward. Also, education isn't just about exams - if a student would find something useful, why would you withhold that knowledge just because it's not mentioned in exam board documentation?
I therefore teach my students about bitwise logic and Exclusive-OR. Bitwise logic is really just a combination of Boolean logic and binary - both of which are in the specification - and is a useful technique for a variety of things from checking whether a number is odd and binary to denary conversion to binary flags, encryption (the WWII Lorenz cipher used bitwise EOR) and even subnet masks. You could also argue that it's what the KS3 National Curriculum means by be able to carry out simple operations on binary numbers.
If I want to stretch the more confident students, I might explain object-oriented programming and recursion. Some of the more enthusiastic programmers can get bored with the sort of very simple program that appears in programming papers, and such techniques are both a good way to maintain their interest and a useful technique to add to their programming toolbox. If you think that a student will finish a programming task more quickly than other students, you can challenge them to use an OOP or recursive technique in their solution. There are some recursive techniques, such as flood fill, that are relatively simple to explain.
The only danger here, of course, is whether the student will gain credit for using these techniques in a written paper - but we shouldn't really expect teachers to legislate for examiners who know less than the students.
Going outside the curriculum can also signpost techniques in higher courses. I show my students recursion at KS3 using Scratch, and when comparing algorithms and discussing techniques such as nested loops, I explain to GCSE students that efficiency can be measured (i.e. the existence of Big O, but maybe not the detail). This both helps students to develop an idea of whether further study is for them and reduces the jump in level.
For a similar reason I tend to start networking topics with a broader view than just computer networks - e.g. transport networks, electrical circuits and even social networks - and ask what they have in common. I introduce the idea of shortest/quickest/cheapest paths (which could be used in routing algorithms), and graph theory staples such as Eulerian circuits, the Chinese Postman and the Travelling Salesman.
If you take the idea of not teaching anything that isn't mentioned in the specification to its extreme, then you wouldn't be able to give any examples or explain how techniques work, and most of us would concede that that's not how teaching works.
Also, if I didn't go beyond the GCSE specification I'd cover the entire course in year 10 (and as it is I find that things get very repetitive after Christmas in year 11). There's really not much in the GCSE specification that isn't in the KS3 National Curriculum - it's quicker to remind students of topics such as programming, binary and Boolean logic than it is teach them in the first place.
I appreciate that some of these ideas require a degree of subject knowledge, but most of it isn't degree-level. We covered things like half-adders for O level Computer Studies (along with a lot of things that I don't generally include, such as octal and binary fractions, De Morgan's Duals and floating-point binary), but a lot of the knowledge and examples I picked up through general interest, visits to museums and following the news. Platforms such as Twitter and Android news feeds learn your preferences and start to suggest things - they form the basis of a lot of my tweets.
A final thought… one of the criticisms of the binary question in this year's OCR paper 1 was "Why would a student think of binary in that way?" Well, that was exactly how I described binary to my students, so is the real problem the teaching resources that people are using? When teachers say, "Why would a student think of binary in that way?", are they really saying "My resources don't describe binary in that way"?
I've mentioned before that one of the biggest changes to teaching since I trained is that teachers are much less likely to produce their own schemes of work. Hattie's criticism (in Visible Learning) of using other people's schemes of work is that it stops you from thinking about the course as a whole and why you're covering each of the topics.
It can be useful to start the course with the most fundamental concepts, but ultimately you don't need a scheme of work if you read the GCSE specifications like I do, e.g. (for OCR):
1.1 Tell the students everything you know about systems architecture
1.2 Tell the students everything you know about memory and storage
1.3 Tell the students everything you know about networks
…and so on.
If someone asks me "Why are you teaching that?", I have an answer.
This blog was originally written in July 2023.