Mike Sharples, Richard Noss
We are living in a world of increasing interdependence and complexity. Science and maths underpin so much of everyday life: yet too few people really understand how the science and maths that affects their lives is done. That knowledge is essential if we are to be productive and engaged citizens of the 21st century. How else can we hope to understand stock market crashes, compare goods and services online, or assess competing arguments about climate change? Computational thinking empowers us to explore how systems and processes work, including societies, the spread of diseases, interacting technologies, and our own minds and bodies.
We need to distinguish computational thinking from creative computer programming (or ‘coding’). Both are relevant and important skills.
Computational thinking involves forms of dynamic problem solving that computer scientists practise, such as splitting problems into smaller parts, tracing how things work, finding ‘bugs’ in processes, recognising and analysing patterns. Given the centrality of computers in science and increasingly, social science, computational thinking is an essential tool for making sense of the world.
Through computational thinking we gain a way of questioning evidence and assumptions, by building models and analysing patterns in data. Research suggests that even young children can make sense of some of these ideas, including estimation, interpreting evidence, and dynamic modelling. Although they originate in computer science and mathematics, they are important for the way we all think and act.
Yet, as Ben Goldacre says, in his book Bad Science (Goldacre, B. (2009) Bad Science (London: Harper Perennial)): ‘The process of obtaining and interpreting evidence isn’t taught in schools, nor are the basics of evidence-based medicine and epidemiology, yet these are obviously the scientific issues that are most on people’s minds.’
Shut down or restart?, the Royal Society’s 2012 report into computing in UK schools, highlights another benefit of computational thinking. ‘We want our children to understand and play an active role in the digital world that surrounds them, not to be passive consumers of opaque and mysterious technology. A sound understanding of computer science concepts enables them to get the best from the systems they use, and to solve problems when things go wrong. Citizens able to think in computational terms are able to understand and rationally debate issues involving computation, such as software patents, identity theft, genetic engineering, and electronic voting systems for elections.’
A recent study of how people interpret computer outputs in their workplaces found that many people were completely unaware of the systems that underpinned their working lives. For example, people working in a school developing science ‘apps’ for mobile phones. Their playful hands-on science experiments used the built-in functions of phones such as tilt sensors and voice recognition.
The Blatchington children were not just writing programs, they were engaged in software design. They set out specifications for interactive software, based on the requirements of the competition. They proposed software apps that exploited the features of modern mobile phones. They designed interfaces and produced storyboards for the interactive software. And they presented their solutions in text and video.
By programming computers themselves, people can come to see that software isn’t magic produced only by big corporations, but is based on some principles and processes that they can understand. Programming is not just grappling with long lines of code. Since the 1960s, there have been many attempts to design programming languages and systems that are accessible to the non-programmer – to everyone in fact.
There are many ways to get involved in programming. For example, not much more than £20 will buy you a single-board computer developed in the UK by the Raspberry Pi Foundation. The foundation’s goal is to stimulate the teaching of basic computer science in schools at minimal cost – with the ultimate aim of ensuring that people control computers rather than the other way round.
The foundation has found a ready market. Since the government announced that it was backing the teaching of programming, demand for the cheap, credit-card-sized computer has soared. It comes equipped with a processor similar to the one used in many smart phones, a memory chip, an Ethernet port to connect to the internet and a couple of USB ports.
After plugging in a keyboard, mouse and screen, children should be able to use the Pi’s open-source software to write their own code.
Programming for everyone
Scratch is a programming language that, to quote its popular website, ‘makes it easy to create your own interactive stories, animations, games, music, and art – and
share your creations on the web’.
The key design idea is that as people create projects and programs for themselves, and then share the fruits of their programming, they come into contact with key mathematical and computational ideas. Thus while learning to think creatively, they also come to think computationally. This is programming in every sense but one: it is not just for programmers.
Scratch is the latest in a long line of programming languages for children. The first of these was Logo, developed at MIT nearly 50 years ago and updated several times over the decades. A recent addition to the list is NetLogo, a modelling system that, based on writing simple programs in a dialect of Logo, allows people to build, tinker with and share dynamic models of anything from dynamic art to models of evolution.
This ability to model how complex systems develop over time comes courtesy of modellers that give instructions to hundreds or thousands of independent ‘agents’ all operating concurrently. This way of thinking – that pattern and structure emerge from simple rules applied to many interacting agents – underpins whole areas of modern science and social science. It is a key component of computational thinking that provides ways to think about evolution, randomness, 3D graphics and an everexpanding list of ideas.
Logo, NetLogo and Scratch aim to tap into activities that children (and adults) find naturally interesting (drawing, emergence and games, respectively). One of the key differences between Scratch and its predecessors is that programs do not consist of lines of text-based code. There have been several attempts to achieve nontextual programming systems, for example, ToonTalk. The latest addition to the range is MIT’s App Inventor. App Inventor is a programming system, not dissimilar to Scratch, that lets novice programmers easily create games on mobile phones. Instead of writing code, you visually design the way the app looks, and using simple scratch-like ‘blocks’, specify how the app works.