How well does GCSE Computer Science prepare students to become good programmers?
I know, programming is not everything, and the other aspects are important too, but still, in the modern world the ability to program well is likely to to give a major advantage in many career paths, and be indispensable in others.
So, does GCSE Computer Science cut the mustard?
I would argue not.
A couple of analogies:
- You complete your secondary Maths education and are very competent at solving quadratic equations and working with probability, but little else.
- You learn French for several years and come out of your GCSE with the amount of knowledge contained in the “essentials” pages of a phrase book, but would be completely stumped in a real conversation with a French person.
Below are some examples to illustrate my point, taken from the mark scheme of a past paper 2 OCR exam.
Example Solution to GCSE Computer Science Exam Question
This question is about implementing a voting system.
acount = 0 bcount= 0 ccount= 0 vote = "" while vote != "END" vote = input("enter A, B or C") if vote == "A" then acount = acount + 1 elseif vote == "B" then bcount = bcount + 1 elseif vote == "C" then ccount = ccount + 1 end if endwhile print acount print bcount print ccount print acount+bcount+ccount
OK, so there are some basic constructs in there such as a
while loop and
if..else if... end, and some user input. For the equivalent to what in Maths would be considered “foundation” students, this question provides a reasonable level of challenge. However, for more able students, it’s really a very simple exercise.
GCSE Computer Science Example Exam Question
This next example provides more challenge, due to the use of nested
for loops. The student is given the following pseudocode and asked to trace the values of the variables for a few steps.
01 for k = 1 to 3 02 for p = 1 to 5 03 print (k + p) 04 next p 05 next k 06 m = 7 07 print m * m
OCR GCSE Computer Science Programming Project
“That’s why we have projects” I hear you say. I agree projects are the solution to the problem. However, as things are, there is so much emphasis on ancillary aspects that much of the potential of these projects is lost and what could have been a fun and engaging way into the world of writing actual programs can become an overwhelming barrage of tedium and seeming pointlessness. Not to mention that now the project doesn’t technically count towards the final mark, motivation could be an issue and programming could receive even less attention.
Here’s the section on the programming project from the OCR syllabus:
When developing a solution to the programming task, we would suggest using an iterative process, such as below:
- Success criteria – what key things must the solution contain?
- Planning and design – the solution is broken down and suitable designs created
- Development – the iterative development with code explanations
- Testing and remedial actions – a log of successful tests including correcting any errors
- Evaluation – a review of the success criteria that have been met.
This process will allow learners to demonstrate the key elements of computational thinking:
- Thinking abstractly – removing unnecessary detail from the problem, and Control and Data abstraction
- Thinking ahead – identifying preconditions and inputs and outputs
- Thinking procedurally – identifying components of problems and solutions
- Thinking logically – predicting and analysing problems
- Thinking concurrently – spotting and using similarities.
I believe a competent and inspiring teacher can take all of that and make it into an exciting learning opportunity for their students, but it ain’t easy!
I would argue that much of it is putting the card before the horse. Whereas more experienced developers will spend considerable time designing, planning and even writing tests for their code before writing a single function, this does not reflect the common or best approach for students at GCSE level. At this level, I would argue that it makes much more sense to have an idea of what you want to create, and then dive in and try and make it happen with code. This will automatically lead to a certain amount of evaluation, debugging, remedial action, iterative development etc., as well as involving must of the types of thinking listed, but all of those concepts will be extremely ABSTRACT (oh the irony!) until students have considerable experience of just writing code.
Web Technologies for GCSE Computer Science
And then there’s web technologies!
I mean, this has to be one of the most important areas of of software development, and one which could provide lucrative and exciting careers for students, yet most curricula don’t even cover the basics.
I believe a programming qualification that aims to prepare students for the real world should at give at least a basic grounding in:
The Future of Computer Programming at School
I am aware that besides GCSE there are several computing options available, and no doubt some of those address my concerns, but the fact remains that GCSE is the dominant qualification in most schools and it makes sense to me to address the programming issue at this level.
Some possible solutions are:
- A GCSE dedicated to software development, including web technologies
- A Computer Science equivalent to “Further Maths”
To hear more about my educational philosophy, you can listen to an Interview with Robin Andrews from Compucademy on the Educators Podcast
Also, if the project-based-but-without-all-the-boring-stuff approach interests you, why not check out Bulls and Cows – A Game-Based Project for GCSE Computer Science?