The new Computing At Schools (CAS) curriculum puts ‘Computational Thinking’ as a main feature of the program of study. At first, I didn’t pay special attention to the term; I thought as long as it’s something related to programmers and computer scientists, then I must have been doing it for years now anyway, so there’s no need for me to worry about what exactly it means.
- Research Notebook: Computational Thinking - What and Why? (Jeannette M. Wing)
- View Point: Computational Thinking (Jeannette M. Wing)
- Exploring Computational Thinking (Google)
- What is Computational Thinking? (Computer science for fun)
- Computational Thinking (Steve Hunt – CAS website)
2. To almost test my own understanding of what information I’ve read, by writing a summary of it – one I can go back to if needed
The term ‘computational thinking’ was first coined by Jeannette M. Wing in 2006. In a later article of hers (computational-thinking-what-and-why) she referred to the following definition:
From the sources above combined with my own experience, I’ve compiled a list of some of the actions used during computational thinking. The first, in many cases, is ‘decomposition’ which involves breaking up a big task into smaller sub-tasks to make it easier to understand and manage. The following activities are usually applied to these sub-tasks:
Being able to read others’ hand writing is done by identifying the general pattern of the letters and comparing them with the example patterns of each letter that we have in our head. Those that we can’t recognize are anomalies in this case. We also identify patterns in people’s behaviour depending on different stimulus and build our future interactions with them accordingly.
Abstraction and pattern generalization: Filtering out unnecessary information for a certain context and keeping only what is generalizable.
: ) is an ‘abstraction’ of a smiling face. Only the very general features of a smiling face are kept (a curved mouth and two eyes). Everything else about the face is left out, yet everybody knows that a colon and a right bracket is a smiley face.
In some cases, multiple layers of abstraction are used to bridge the gap between what is considered useable/understandable by humans and what a machine can use. All ‘easy-to-use’ computer programming languages use it to turn the 1s and 0s that the hardware deals with into a human readable presentation.
Algorithm design: developing a step-by-step strategy for solving a problem (one that others can follow without thinking). It’s particularly useful when a task needs to be repeated multiple times or when a task needs to be carried out by others (including machines)
Preparing a cooking recipe for a friend
Prefetching and caching in anticipation of future use.
Putting things into a school bag or travel bag is ‘prefetching’ for future use. Keeping a tool next to you in case it is needed or to avoid fetching it again is ‘caching’ with the aim of saving time.
Should you, very quickly, put the things you need for a trip in a big bag, or spend time to pack things very efficiently into a smaller bag (time vs storage)
If I need to roughly estimate the cost of a shopping list in a shop, do I need to use the exact prices up to the penny when adding numbers, or can I just approximate to the nearest pound (or in the unlikely case of a very expensive shopping list, to the nearest ten or even a hundred pound!)
Which line should you stand in at the supermarket, or which route should you choose when travelling to a certain destination?
A computational thinking example: Guess a number
A few days ago, I was playing ‘guess the number’ with my 7 year old daughter. One of us thinks of a number between 1 and 100 and the other has to guess it. After a few tries, she noticed that I normally guess her ‘secret’ number faster than she guesses mine. So she asked me how I did this. What I was actually doing was using a ‘binary search tree’ technique to guess the number. I explained to her in the simplest way I could think of that she should always give a guess that is the number ‘roughly’ in the middle of the remaining range and she is guaranteed to guess the number in no more than 7 guesses (obviously without explaining why).
This is a very simple use of computational thinking to show off in front of a 7 year old: “I can guarantee you I’ll guess your secret number in no more than 7 attempts, or to make it more interesting, a number between 1 and a 1000, in no more than 10 guesses”.
Suppose the range is 1-100 and the selected number is 17 (the following scenario is a worst case scenario):
According to Wing, Computational thinking is not an optional skill, but a fundamental one that everybody should learn, to function in our modern society. It complements and combines mathematical and engineering thinking.
Computational thinking is not just about computer software, but also the concepts we use to solve problems in our daily lives.