Coding and digital skills

Oct 15, 2015

Miles Berry

Remarks for eSkills at Schools event, European Parliament, Brussels

Just over a year ago, England replaced its old ‘ICT’ curriculum with a curriculum for a new subject, ‘computing’ which placed far greater emphasis on computer science including ‘coding’ than we ever had before. This is pretty radical stuff – mandating that all pupils in local authority schools, aged from 5 to 16, should learn about the principles of computer science alongside digital technology skills.

It’s still too early to report with any confidence about how successful we’ve been, and indeed changing the curriculum requirements might perhaps be seen as the easiest bit, but there are interesting stories to tell about our journey, and I’m very grateful for this opportunity to do so.

Rationales

Why then set out on this journey? What were the underpinning rationales for our decision to put computer science onto the curriculum for all? I think there were a number of factors here.

  • Firstly, we have a wish to satisfy children’s inherent curiosity – they use computers and the internet, but too many had at best a sketchy idea of how these things work: putting CS onto the curriculum, alongside digital skills, is in part about ensuring they’ve some reasonably sound idea about what’s happening behind the screen.
  • CS though isn’t just about the technology: it’s about the principles of computation and information that underpin that technology: things like the idea of computability: some problems are easy, some are impossibly hard, and some are quite hard unless you think about them the right way (these, of course, are the really fun ones!).
  • For our ministers, there was also an economic argument – for the UK to maintain vibrant software, games, visual effects, cyber security and fintech industries, we need students studying CS at university, and numbers on these courses looked hard to sustain given the poor experience too many had at school of unambitious curricula and qualifications. Interestingly, Tim Berners-Lee’s argument here was not so much that we need more programmers, but that we need more doctors, lawyers and civil servants who understand code, even if they’re not writing code themselves.
  • There’s also an argument that a CS education is good preparation for an unknown, but plausible tech dominated, future. Few believe that digital technology will play a less important role in our students’ lives than it has in ours, but given Moores’s Law and seemingly exponential rates of change, an IT curriculum that focussed on the skills needed to use present day tech would be largely irrelevant by the time pupils came to actually applying those skills in the workplace, whereas the foundational principles of CS would stand the test of time – they don’t go out of date, and, more importantly, if you understand these principles, you stand a better chance of making sense of, and being in control of, the tech you find yourself using, both now and in the future.
  • For me though, the most convincing argument is around the nature of a liberal education – that, given the importance of digital technology, of computation and information, in all of our lives, a truly rounded education for the third millennium really ought to include some introduction to the ideas that lie at the heart of these things – an appreciation of code is no less important today than an appreciation of art, of music, of poetry, and just as we learn these things in school through making, so it’s hard to really get to grips with CS without some experience of writing a few programs.
  • One final argument – back in the 70s and 80s Papert and others made strong claims that learning to program (in Logo) wasn’t an end in itself, but was more about giving children tools to think with – that those who learnt to program, started to think about thinking and learn about learning: I think this mirrors the emphasis we now give to computational thinking, more of which later…

From ICT to Computing

Ambitious as England’s new computing curriculum is, I don’t think the old ICT curriculum was really that bad – we’ve thrown out neither baby nor bathwater in the move from ICT to computing: rather, we’ve recognised that we need to go further still.

Typically, under the old ICT curriculum, most of our pupils became pretty good at using a range of software on a range of platforms; they could access good quality content for themselves; they were able to use technology to communicate ideas and information effectively; broadly speaking, they were able to keep themselves safe; they were, for at least some values of digital literacy, digitally literate and they had a sound set of digital skills with which to move on to the next phase of their education or to enter the workplace.

We decided that this wasn’t enough for them. As well as using software, we wanted them to learn to make software themselves. As well as accessing content, we wanted them to work creatively in a range of digital media. As well as communicating online, we wanted them to learn to collaborate online. As well as staying safe, we recognised that they also needed to act responsibly. As well as literacy, we wanted some criticality. As well as digital  skills, we wanted them to have digital knowledge and understanding.

Beauty and Utility

With these ambitions in mind, how then do you create a computing curriculum? I think for at least some of us involved in the drafting process, William Morris’s dictum about interior design was something of a touchstone. He wrote:

Have nothing in your houses that you do not know to be useful, or believe to be beautiful.

In curriculum terms, we strove to include things which we knew pupils would find useful – finding things on the web, word processing, planning, making, delivering presentations, spreadsheets for analysing data and modelling systems, creating quality online content. In all the emphasis we’ve had on coding, it’s absolutely crucial not to lose sight of the importance of young people leaving school being able to get useful stuff done on computers. We also though wanted to include things beyond mere utility: the things that we hoped pupils would find interesting. Things like algorithms, programming, debugging, the workings of computers and the internet, binary representation, Boolean logic: these all have their uses, at least for some, but their inclusion in our curriculum is more about their intrinsic interest than extrinsic utility.

CS, IT, DL

It would be wrong to see England’s Computing curriculum as being just about coding, or even just about computer science – it’s much more inclusive than that. As Britain’s Royal Society recommended, our curriculum now includes elements of computer science, information technology and digital literacy. One way of thinking about the three strands is as the foundations, the applications and the implications of computing.

  • Foundations (the computer science) would be about the underpinning principles of computer science (logic, algorithms, data structures, abstraction and the like), as well as their practical expression through programming and more generally in computational thinking.
  • Applications (or IT) are about skills in using digital technology to get useful work done, including collecting, managing, analysing and communicating data and information, as well as creative work in a range of digital media.
  • Implications (as one interpretation of digital literacy) are about the critical understanding of the impact of digital technology on individuals and society as well safe, responsible and ethical use. I’d include intellectual property, privacy and security here too.

Take, for example, the question ‘How does Google work?’. In CS, or foundations, terms, this is about big data, the Page Rank algorithm, caching and indexing. In IT (applications) terms, there’s typing your query and clicking the button, but also using advanced queries, filtering results, checking sources and dates and so on. In terms of digital literacy (implications) we’d want to talk about the data built up about each user, filter bubbles, targeted pay per click advertising, possible over-reliance on one source for information and about employing smart, creative people.

Computational Thinking

The golden thread running throughout England’s computing curriculum is ‘computational thinking’. The first sentence of the curriculum document, with only the slightest nod in the direction of the the Theses on Feuerbach says:

A high-quality computing education equips pupils to use computational thinking and creativity to understand and change the world.

I see these as a pairwise thing – computational thinking is about understanding the world, creativity is about changing the world – at least in the sense of making something original, something that wasn’t there before.

What then do we mean by computational thinking?

Jeanette Wing’s definition is a good one:

Computational thinking is taking an approach to solving problems, designing systems and understanding human behaviour that draws on concepts fundamental to computing.

It’s looking at problems and looking at systems in such a way that a computer could help us solve them or understand them. It’s absolutely central to how we’re thinking of computer science education in England, but it’s also hugely relevant to the IT and digital literacy strands of the curriculum too.

Computational thinking involves a number of concepts. These include

  • Logical reasoning – computers are deterministic machines and we can confidently predict how they’ll behave given certain programs and certain inputs (well, unless they’re running Windows 8)
  • Algorithms – the sense of a sequence of steps or a set of rules to get something done, as well as an awareness that there may be more than one algorithm for any particular problem, and some algorithms are, in some senses, better than others,
  • Decomposition – the ability to break big problems down into smaller chunks, solving each of these and then combining them as a solution to the whole
  • Generalisation or patterns – a willingness to look for solutions to a general class of problems and apply that to a specific situation, and a certain reluctance to re-invent wheels if others have already figured out a good way to solve a similar problem; and
  • Abstraction – that multilayered way of managing complexity that lets us build and use such incredibly complex machines as modern computers, by not worrying too much about what lies inside particular ‘black boxes’, unless we need to.

These things aren’t just about programming: it’s not too tricky to see how these help make sense of using computers much more generally than just coding, and indeed how they can apply across the curriculum – there are strong parallels here with mathematical reasoning, the scientific method, design thinking and more general planning and critical reasoning skills.

Alongside these concepts, we’ve come to recognise that there’s a softer set of approaches which the computational thinker is likely to make use of. For us, the list includes:

  • Tinkering (or experimenting, playing or exploring if you’d rather) – drawing out the curiosity that seems to drive computer scientists, programmers and other geeks into figuring out how things work;
  • Making – a recognition that computing is an essentially creative discipline in which folk are actively engaged in making original things for others to use, or at least they should be;
  • Debugging – that all too often things don’t work as intended, and that rather than running in circles, screaming and shouting, there’s much gained through figuring out what went wrong and then setting about putting it right – we know from Carol Dweck’s work on growth mindsets just how important it is to have a positive attitude to the mistakes we make;
  • Persevering – we acknowledge that programming is hard, but also that overcoming a challenge is a far more powerful learning experience (and much more fun) than just practising something easy that you can already do; and
  • Collaborating – software gets written by teams, and being able to contribute positively to a team is absolutely essential for a school leaver wanting to work in the software industry, or indeed any industry.

Again, no one would say these things only matter in computing – these approaches, or their close analogues, are relevant to most fields of endeavour, but I think we’re starting to see computing, perhaps particularly programming, as a great way to nurture these attitudes and approaches in young people.

Programming and CT

So if England’s curriculum is about developing computational thinking and creativity, why is there so much apparent focus on ‘coding’. Actually, we don’t mention ‘coding’ at all in the programmes of study – we do though talk about programming.

For me, programming is a two step process – thinking about how to solve the problem, then implementing the solution in a language the machine can understand, so I’d say programming is algorithms plus code.

Can you have one without the other? Well, yes. We can (and indeed, do) look at algorithms without implementing them – there’s lovely work happening in English schools on ‘unplugged’ approaches to developing computational thinking, such as working out the algorithm (or the recipe) for a jam sandwich. There’s also plenty of resources out there which attempt to teach ‘coding’ without really letting pupils think through the plan and purpose for their code – the ‘paint by numbers’, step-by-step approach to learning to code which, to me, seems much closer to programming pupils than pupils programming.

The two though do seem to work particularly well hand in hand. Coding is the ‘lab work’, the experimental bench, for computer science: it’s the means through which pupils can see their algorithms come to life, where they can test their ideas out, and where they can make something genuinely useful. Imagine science education without experiments – it’s possible, but it’s likely to be much less effective, and much less fun.

Coding isn’t the end in itself, but it does seem a particularly effective way to develop the concepts and approaches that we recognise as computational thinking.

Conclusion

I don’t want to give the impression that England has all this figured out. It’s been a hugely exciting few years, changing a nation’s curriculum in such a significant way and seeing the impact that this is already having on schools, teachers and pupils. We’ve something approaching an alpha release –  a minimum viable product, but there’s plenty more development work still needed, and I suspect we’re never going to have a final, finished product, much more a perpetual cycle of beta versions.

I worry at times that we’ve emphasised coding too much, sometimes at the expense of computational thinking, but also at the really, really useful e-skills that our learners still need – no one gets a job programming in Scratch, but plenty of folk are likely to have to word process reports, make presentations and develop online content. Some of what follows next for us might well be about restoring the balance to the curriculum as implemented – ensuring that the foundations, applications and implications of computing all get covered so that our pupils are prepared as well as they possibly can be for the opportunities, responsibilities and experiences of their later life.