Computing for all: Is GCSE Computer Science too hard for some students?

Summary: I don’t think GCSE CS is too hard for all students but the data here shows that steps need to be taken to make Computer Science more accessible to the students from the whole 9-1 ability range.

Back in September (whilst I was analysing my Computing department’s GCSE results for 2019), Dave Thomson from FFT Data labs published this analysis of the previous year’s (2018) national results:

Figure 1: Difference in points scored in GCSEs compared to English and Maths
Source: FFT Data labs

This shows that nationally, the 67,100 students who took a Computing GCSE in England in 2018 achieved around a grade better in English and Maths than they did in Computing.

Why do students achieve a grade lower in CS compared to English and Maths?

I’ve heard many possible explanations for this but I’m not thoroughly convinced by any of them and so I’ve been on a quest to try to understand that 1 grade difference between Computer Science and English / Maths.

I want Computing to be a subject where any student can see their hard work pay off with similar outcomes to any of their other GCSE subjects. Computing should be accessible to students of any race, religion, background, gender or prior ability.

I’ve been teaching for 12 years and in that time I’ve been asked to teach over 12 different subjects. My background is in Electronic and Computer Systems Engineering so whilst I enjoyed teaching the-now-defunkt-ICT, I’m loving teaching its replacement Computing (KS3) / Computer Science (KS4-5).

I started my teaching career specialising in vocational subjects for students with special educational needs / disabilities and I’ve always loved seeing how ‘weaker’ students can defy the odds to succeed and create opportunities for themselves.

Vocational ICT qualifications are few and far between now but used to be hugely prevalent. The skills-based ICT curriculum could be very creative and practical but the vocational qualifications which assessed them became almost synonymous with schools ‘gaming’ the league tables to quickly get large numbers of students multiple GCSE equivalent grades. ICT departments could get results that were the envy of every other department through qualifications such as OCR Nationals and ECDL which were seen as far too easy and in no way ‘equivalent’ to other GCSEs despite historically counting as such in league tables.

I suspect that the grade boundaries for the first cohort of Computer Science at GCSE were deliberately set harshly to make sure that CS was seen as a rigorous alternative to ICT.

The problem is, the distribution of students achieving each GCSE grade is preserved from one year to the next by exam boards in the interest of fairness and comparability. Exam boards attempt to keep the percentage of students achieving each grade the same from year to year. This means that even if Computing receives more curriculum time or every student is taught by an experienced specialist, future cohorts of students can still expect to under achieve in Computer Science compared to their other subjects unless something changes in the way GCSE CS is assessed.

How does the distribution of grades in CS compare to other subjects?

I personally think GCSE Computer Science should be accessible to students of all abilities but I understand why many schools are selective with their cohorts. Computer Science is perceived as a difficult subject and many schools only allow higher ability students to enter the course.

I don’t have any data to back up that statement about many schools being selective by prior ability so I wanted to see if the if the proportion of each grades awarded at GCSE was skewed towards the higher grades.

Figure 2: Percentage of students achieving each GCSE grade in Maths, English and Computer Science in 2019

Figure 2 shows the proportion of students achieving each grade in 2019 in England only.

I’ve included German in all graphs as it was the only subject where students under-performed more significantly than Computer Science compared to English and Maths.

You can see that whilst German grades are skewed towards the higher higher grades (many lower-prior-ability students won’t be entered for language GCSEs), Computer Science is slightly skewed towards the lower grades. This doesn’t look significant – Computer Science has a fairly normal distribution of grades from 9-1.

Figure 3: Cumulative percentages of students achieving each GCSE grade in Maths, English and CS in 2019

The shape of the CS grade distribution curves would imply that there’s a fairly standard distribution of students of all prior abilities being entered for GCSE Computer Science, but is that the case?

What is the prior ability range of students entered for GCSE Computer Science?

Dave Thomson (who wrote the FFT article at the top of this post) kindly provided me with a link to national GCSE results for 2018 compared to their KS2 starting point. Data for 2019 is only provisional at time of writing.

The graph below shows the prior ability (at KS2) of the 2018 and 2019 cohort of students entered for Maths, English, German and CS GCSEs:

Figure 4: Prior ability of GCSE entries (2018-2019)
Source: DFE KS2-KS4 Transition Matrices
Figure 4: Prior ability of GCSE entries (2018-2019)
SourceDFE KS2-KS4 Transition Matrices

‘Average’ KS2 results were around a 4b so the shape of the English Language curve on Figure 4 is what you’d expect if all students were entered across the whole ability range. The little spike on the left of the graph is because levels W, 1 and 2 are not split into sub levels but are all grouped together rather.

You can see that both German and (to an even greater extent) Computer Science are skewed towards more high-prior-ability students being entered. You can see that reflected in Figure 3 for German because the grey line has been shifted across to the higher grades but you can’t see the same shift for Computer Science.

Figure 5: Prior ability of CS GCSE Entries (2018-2019) by gender  Source: DFE KS2-KS4 Transition Matrices
Figure 5: Prior ability of CS GCSE Entries (2018-2019) by gender
Source: DFE KS2-KS4 Transition Matrices

Figure 4 and 5 show that lower prior ability students aren’t being entered for GCSE Computer Science as frequently as higher prior ability students. They don’t explain whether lower ability students opt out for themselves or whether their schools don’t give them that opportunity but they do show that it’s an issue for both boys and girls (slightly more significantly so for girls).

How accessible is Computer Science to lower prior ability students?

The initial graph from Dave’s FFT article shows that on average students can expect to achieve around a grade lower in CS than their other subjects but I wanted to know if that under-performance was consistent across the whole ability spectrum. Do lower-prior-ability students under-perform more significantly in CS or is that 1 grade difference the same regardless of their prior ability?

Figure 6: Most likely GCSE grade (2018) depending on KS2 prior ability   Source: DFE KS2-KS4 Transition Matrices
Figure 6: Most likely GCSE grade (2018-2019) depending on KS2 prior ability
Source: DFE KS2-KS4 Transition Matrices

Next, I used the DfE transition matrices to work out the work the most frequently occurring grade at GCSE for students of each KS2 starting level. As you’d expect, students with a higher starting point (horizontal axis on Figure 6) can expect higher GCSE grades (vertical axis) for each of Maths, English, German and CS.

The red (Computer Science) line trails below every other subject (except German for high prior ability students). The gap between English/Maths and CS widens for lower ability students (then narrows slightly)

Figure 7: Difference between most likely GCSE grade for CS, Maths, English (2018) and Eng/Ma grade by prior ability   Source: DFE KS2-KS4 Transition Matrices
Figure 7: Difference between most likely GCSE grade for CS, Maths, English (2018-2019) and Eng/Ma grade by prior ability
Source: DFE KS2-KS4 Transition Matrices

Figure 7 is similar to Dave’s original FFT chart (Figure 1) showing the difference between a student’s GCSE results in CS, Maths and German compared to the average of their grades for Maths and English. However, Figure 7 splits this relative over/under performance down by the prior ability of students entered for each subject.

The brown line (English and Maths average GCSE grade) is flat, at 0, as you’d expect and is included for reference as all other curves are relative to that average of English and Maths grades.

It’s interesting to see that higher-prior-ability students in German under-perform more significantly than lower-prior-ability students but the opposite is true for Computer Science students: lower-prior-ability students under-perform more significantly than higher-prior-ability students.

Figure 8: Difference between most likely GCSE grade for CS, Maths, English (2018) and Eng/Ma grade by prior ability and gender   Source: DFE KS2-KS4 Transition Matrices
Figure 8: Difference between most likely GCSE grade for CS, Maths, English (2018-2019) and Eng/Ma grade by prior ability and gender
Source: DFE KS2-KS4 Transition Matrices

Figure 8 shows that whilst higher-prior-ability girls underperform less significantly than higher-prior-ability boys (relative to their English and Maths grades), the difference between higher-prior-ability and lower-prior-ability students is more significant for girls than it is for boys.

What does all this mean?

I’ve deliberately avoided trying to explain the reasons behind this data to avoid emphasising my own opinions instead of establishing the facts.

My conclusions are that the Computer Science GCSEs as they are currently assessed are not as accessible for lower-prior-attaining students as they are for more able students:

  • Students of all prior-ability can expect to achieve a lower grade in GCSE CS than they do in English / Maths (Fig 6).
  • Fewer lower-prior-ability students are being entered for GCSE CS than higher-prior-ability students (Fig 4).
  • The few lower-prior-ability students who are being entered under-perform relative to English and Maths more significantly than the majority of higher-prior-ability students (Fig 7).
  • These issues (above) are more pronounced in girls.

If schools only entered higher-prior-ability students for GCSE Computer Science they would currently see better results (in terms of pupil progress from KS2) than schools who allowed all students to take GCSE Computer Science. This cannot be allowed to continue if we want Computing to succeed as a subject which is accessible to all students.

What can we do?

As Computing teachers we need to ensure that we differentiate our lessons as effectively as we can. The vast majority of CPD for teachers has so far focused on subject knowledge. It’s encouraging that there’s now plans for a shift towards pedagogy CPD so teachers can learn how to support weaker students as well as stretching the most able.

As heads of department, parents and governors we can campaign for Computer Science to be offered to all students as a point of principal. If a student is willing to work hard they should be allowed the chance to study the subject regardless of how well they did at Primary school.

School leaders should make sure that relative performance between subjects nationally is taken into account when judging the ‘success’ of individual departments. Computing departments should be given time and support so that teachers can access bursary funded high quality CPD and learn from each other.

Exam boards and Ofqual should review the grade boundaries for Computer Science to ensure that the prior ability range of each cohort is taken into account and students can expect comparable outcomes in each subject. They should ensure future changes to assessment material contain a sufficient balance of questions aimed at grades 1-3 as well as higher grades.

The DfE and Ofsted should ensure that schools are given an incentive to increase the timetable allocation for Computing at KS3 and that future Computing KS4 qualifications are fully accessible to the whole 9-1 ability range.

Individual students should ignore all of the above. Students are individuals not statistics. National trends can be (and frequently are) proved wrong by hard working individuals. If you work hard in Computer Science you can achieve a higher grade than any of your other subjects. It’s a hard subject but that makes your ultimate Computer Science grade ‘worth’ even more than any other subject.

I don’t have all the answers here so I’m going to open it up to debate. I’d love to hear what your suggestions are in the comments below.

Continue ReadingComputing for all: Is GCSE Computer Science too hard for some students?

Free computing code typing game now supports Python, C# and VB.NET

I’ve just added C# alongside Python and VB.NET to which means you can learn new code snippets and improve your typing speed by racing through competitive challenges online. is a free code typing game designed for computing teachers and students to help you improve your typing speed. is free to use with no signup required – I designed it for my students to be used as a quick starter activity as a different way of learning and remembering code snippets whilst also encouraging them to become efficient touch typists.

For each programming language you can choose a random code snippet or one from any of the following categories:

  • Variables and constants
  • String manipulation
  • Built in functions
  • Input and output
  • Arrays
  • Conditional logic
  • Repetition / Iteration
  • Procedures and Functions

Each challenge provides some code with an explanation of what it does which you then have to type out as fast as you can. There’s an onscreen keyboard to encourage your to touch type without looking at your fingers:

Improve your python skills and typing speed
Improve your VB.NET python skills and typing speed
Improve your C# skills and typing speed

You can find see the average typing speed, highest scores and other stats at

I hope it’s useful – enjoy!

Continue ReadingFree computing code typing game now supports Python, C# and VB.NET

National Coding Week: Flappy Bird Python Challenge

16th September 2019 is the start of National Coding Week so it’s an ideal time to for anyone to have a go at writing code for themselves.

To celebrate, here’s a free interactive activity that anyone can use to have fun writing code without needing to download any software or create any accounts.

It doesn’t matter how old you are, how much experience you have (or haven’t) got or what your gender is, hopefully there’ll be something in this python flappy bird challenge that will give you a taste of what’s possible with a few lines of python code.

National Coding Week: Flappy Bird Python Challenge

Stage 1: Type with code

The first stage of the flappy bird python challenge gets you to type out the code for a flappy bird game as fast as you can.

Use the on-screen keyboard to help improve your touch typing by trying not to look at your fingers as you type.

See how your typing speed and accuracy compares to other people.

Once you’ve finished, you get a link to the code so that you can run it and play the flappy bird game

Stage 2: Run the code and play the game

The code for the flappy bird game can be run by pressing Ctrl + Enter in your browser.

Press any key to make the bird jump.

The code uses PyGameZero and was originally written by the marvellous Daniel Pope and the original source is available here:

Have a go at playing the game and see what score you can get to without cheating.

Stage 3: Hack the code

Once you’ve played the code for the flappy bird game you can tweak some of the code to make small changes and see how it affects the game.

Lines 4 – 10 define some constants (including GRAVITY and SPEED) which you can tweak to make the game easier or harder

See what you can create with code.

Next steps

There are some brilliant free python tutorials all over the web.

I’ve published some free interactive self-marking challenges which you can use to pick up new skills, try them out and test yourself to generate a PDF certificate showing your progress.


Continue ReadingNational Coding Week: Flappy Bird Python Challenge