Miles Berry, principal lecturer in computing education at the University of Roehampton and board member of UK ICT subject association Naace, writes:
It will have been hard to miss the changes afoot in the move from ICT in the old national curriculum to computing in the new version, coming into effect in September. We've seen lots of headlines about how children will be “learning to code” from the age of five, and a number of great initiatives such as Code Club, Year of Code and Codecademy, which aim to give children and their teachers the opportunity to learn to write “computer code”. This really is great, but you'd be forgiven for thinking that “coding” is all there is to the new programmes of study. But this is far from the case – “code” and “coding” aren't even mentioned. What we do have is a mix (I'd now say a balanced mix, but others would disagree) between computer science, information technology (IT) and digital literacy. Or the foundations, applications and implications of the discipline. There's much more to computing than computer science, and there's much more to computer science than coding. Rather than making reference to “coding”, the new programmes of study talk instead about “programming”, and it's worth thinking a bit more about these two related, but not entirely synonymous terms. Both coding and programming are about getting the computer to do things. They're about giving it instructions to follow, and getting something – ideally something useful – done. Coding involves creating a set of instructions, rules or a description in a formal language, which the computer can interpret, to achieve a particular objective. There are plenty of choices for the formal language – Scratch is a lovely, visual introduction, ideal for KS2; HTML is the language of the web; Python seems to be the front-runner as a text-based programming language for KS3, and even good old Excel, despite Mr Gove's criticisms of it, is jolly useful for describing and solving all sorts of real world problems as well as a good introduction to functional programming. Programming, on the other hand, involves computation, i.e. performing calculations or processing information according to a set of rules. This involves coding, but it's also involves some creative thinking. The programmer needs to work out how to solve the problem or model the system as well as expressing this as computer code. The “how” here is the algorithm – it's the ideas, expressed as a sequence of steps or a set of rules, for getting something done, which then gets expressed as code on whatever computer and in whatever programming language we happen to be using. For me, then, programming = algorithms + coding.
In programming, we start by thinking. We think through the algorithms for how to solve a problem – breaking this down into parts, and then breaking the parts down further into sequences of steps or sets of rules.
Expressing these algorithms in the formal language of code is also highly creative work, but also very technical work, demanding a detailed knowledge of the semantics (the vocabulary) and syntax (the spelling, punctuation and grammar) of the programming language you're working in.
It's in the coding where most of the power and the fun of programming comes – being able to get a computer, or a robot, to put your ideas into action is a great 'wow!' moment for many.
I suppose one analogy is that of writing and translating poetry – both are creative processes, but the former is much more in the realm of ideas and structure, the latter demanding an excellent knowledge of the vocabulary and grammar of the target language.
I do think Code Club, Year of Code et al are right to focus on “coding”, as this is more immediately engaging for pupils than the more abstract ideas of computer science, but I'm also glad that the programmes of study go beyond this, otherwise we might be at risk of replacing one set of IT skills with merely another set of coding skills.
Just as I'd be a bit concerned about any units of work that focus on the mechanics of coding without drawing on the ideas of algorithms, I'd also worry about too much emphasis, certainly in primary school, on algorithms without the chance to code up a program to put these into action.
I do see great benefit in an “unplugged” approach to some computer science ideas, but trying to teach “computational thinking” without any actual coding is likely to be as effective – and fun – as teaching science without any experiments.