Sunday, September 21, 2014
Computational Thinking in the Primary Computing Curriculum
Over the summer I have been reflecting on what computational thinking is and how it affects primary computing understanding and practise. In this short article I am going to look at the following questions.
· What is computational thinking?
· Who first thought of the term?
· Is it a new idea?
· What thinking skills are included?
· What do these thinking skills mean for primary pupils and teachers?
· Computational thinking in the Computing National Curriculum
· Cross curricular?
What is computational thinking?
Wikipedia2 describes it as “problem solving method that uses computer science techniques”1a
Who first thought of the term?
The first3 person to popularise computational thinking and call for computational thinking skills to be taught to all was Jeanette Wing,4 a prominent American computer scientist. She argued that, “To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability.”5
Is it a new idea?
The idea that problem solving methods used by computer scientists should be taught to every child is relatively new (2006) however the toolkit of useful critical thinking tools are much older.
What thinking skills are included?
Computer scientists and educationalist are in broad agreement as to what should be included. Miles Berry6 included algorithms, decomposition, patterns, logical reasoning and abstraction. A recent CAS working group included algorithmic thinking, evaluation, decomposition, abstraction and generalisation in their very helpful framework document7.
What do these thinking skills mean for primary pupils and teachers?
I am going to limit myself to the CAS working group list of computational thinking skills as I find these particularly helpful.
Defining a precise set of instructions or rules to achieve an outcome or solve a problem. A recipe can be an algorithm, musical notation can be an algorithm. Instructional writing can be an algorithm. All working computer programs started life as human ideas that were expressed as algorithms in thoughts, words, symbols or flow charts. Programming is the challenge of turning precise ideas (algorithms) into code that can be read by a machine. When we define a precise set of instructions we save time as this algorithm can be reused to solve a problem over and over again and adapted to solve similar problems.
Evaluation is how we look at algorithms and determine how useful they are, how adaptable, how efficient, how correct. There may be many algorithmic solutions to a problem, evaluation asks which one was best and why? Evaluation is also concerned with the people who use an algorithm. Did it solve their problem? Was it better on paper than in practice? Evaluation is also a very useful skill to extend into programming as well. Getting pupils to think about an end user in the design (algorithm) stage can help focus ideas. I think there is a lot of similarity between logical thinking in the national curriculum and evaluation.
Decomposition is the skill of breaking a complex problem up into smaller manageable chunks and solving these chunks separately. I have found this to be a wonderfully useful skill in games design. Faced with the task of creating a new game8 pupils are often overwhelmed by the amount to think through. We use a decomposed planner where they jot down what they want the game to do first before circling objects and ideas and describing these in detail. This allows them to focus on designing a small parts of the game separately before recomposing these ideas into the whole.
Abstraction is the skill of reducing complexity by hiding irrelevant detail and focussing on the most important element. This is a really useful computational skill as once the irrelevant detail has been stripped away computer scientists can focus on what really needs doing. Imagine I wanted to turn the game matching pairs into a computer game. The most important element is; you win if items are the same. This can be abstracted further into A = B win, A ≠ B lose. We recently used abstraction to turn a musical sound track on a video into an algorithm and then into musical programming in Scratch. We started by listening to a video and identifying all the elements on the video, singing, high and low pitch notes, moving pictures, backing track etc. We then looked at what detail was important to turn into notes on Scratch and what was irrelevant. We ended up only keeping the high and low pitch notes. We swapped to a much simpler music track with notes only and listened to this to write a musical algorithm before converting this into code.9
Generalisation is adapting a solution that solved one problem to solve another. In our abstraction example earlier we reduced matching pairs to A = B win A ≠ B lose. We could then use generalisation to adapt this solution to think about creating a quiz. In a quiz, if the answer we have thought of is the same as the users answer we say it is correct. If the answer is not the same we say it is wrong. This is almost identical to A = B win A ≠ B wrong so we can adapt one solution to solve a similar problem. In our Scratch perimeter program10 we discover a simple way to calculate the diameter of a circle by multiplying the radius by two. Pupils then use the principle of generalisation to adapt this solution to calculate the perimeter of regular 2D shapes.
Computational Thinking in the National Curriculum
The opening statement of the introductory paragraph of the 2014 computing national curriculum11 says, “A high-quality computing education equips pupils to use computational thinking and creativity to understand and change the world.” This is a wonderful opening statement which highlights the importance of computational thinking. I also like the way it highlights that computer science is both a science and an engineering discipline. Understanding the world is a scientific endeavour and changing it is an engineering one. Computer science doesn’t just think about things it turns this thinking into digital artefacts to be tested and evaluated by society.
In the aims we find mention of abstraction, logic, algorithms and evaluating and the exhortation to “analyse problems in computational terms, and have repeated practical experience of writing computer programs in order to solve such problems”
In KS1 we find mention of algorithms and logical reasoning. In KS2 we find decomposition and logical reasoning. In KS3 abstraction, algorithms and logical thinking are included.
I see the national curriculum as a minimum entitlement and would urge teachers to make full use of the full range of computational thinking skills when they are appropriate.
The good folk at the Barefoot12 project are developing some cross curricular computational thinking activities and I think it is a laudable aim to include computational thinking ideas into the wider primary curriculum. In my code-it.co.uk resources I have mainly focused on computational thinking through algorithm design and programming. I think ideally we should do both. Recognising that these ideas are special because they have grown out of computer scientists desire to create artefacts and systems to evaluate and change the world but that there is real traction in understanding that is broad and multidisciplinary.
1 David Barr, John Harrison, and Leslie Conery (2011). “Computational Thinking: A Digital Age Skill for Everyone” https://csta.acm.org/Curriculum/sub/CurrFiles/LLCTArticle.pdf
2 Wikipedia Computational Thinking http://en.wikipedia.org/wiki/Computational_thinking#cite_note-1
3 Seymour Papert mentions computational thinking but doesn’t really expand what it means or call for these skills to be taught to all. However I haven’t read all of his works so am happy to be corrected. He mentions computational thinking in "An exploration in the space of mathematics educations". International Journal of Computers for Mathematical Learning (1996) http://www.papert.org/articles/AnExplorationintheSpaceofMathematicsEducations.html I couldn't find a comprehensive treatment of computational thinking in this journal.
4 Jeanette Wing http://en.wikipedia.org/wiki/Jeannette_Wing
5 Jeanette M Wing Viewpoint (2006) https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf
6 Miles Berry (2014) http://milesberry.net/2014/03/computational-thinking-in-primary-schools/
7 Professor Paul Curzon, Mark Dorling, Thomas Ng, Dr Cynthia Selby & Dr John Woollard (2014) Developing computational thinking in the classroom: a framework http://community.computingatschool.org.uk/resources/2324 (second document link on right)
8 Primary Games maker planning including decomposed games planner http://code-it.co.uk/scratch/primarygamesmaker/primarygamesmakeroverview.html
9 Scratch music as code planning http://code-it.co.uk/scratch/musicscore/musicscoreoverview.html
10 Scratch perimeter program http://code-it.co.uk/scratch/perimeter/perimeteroverview.html
11 Computing National Curriculum https://www.gov.uk/government/publications/national-curriculum-in-england-computing-programmes-of-study
12 Barefoot Computing Project http://barefootcas.org.uk/
Posted by JW at 10:23 pm