Computational Thinking
Computational Thinking
A complex problem is one that, at first glance, we don't know how to solve easily.
Page 1 of 28
For example, if you agree to meet your friends somewhere you have never been
before, you would probably plan your route before you step out of your house.
You might consider the routes available and which route is ‘best’ - this might be
the route that is the shortest, the quickest, or the one which goes past your
favorite shop on the way. You'd then follow the step-by-step directions to get
there. In this case, the planning part is like computational thinking, and
following the directions is like programming.
Being able to turn a complex problem into one we can easily understand is a skill
that is extremely useful. In fact, it's a skill you already have and probably use
every day.
For example, it might be that you need to decide what to do with your group of
friends. If all of you like different things, you would need to decide:
• what items you need to collect, how you can collect them, and how long you
have in which to collect them
• where the exit is and the best route to reach it in the quickest time possible
• what kinds of enemies there are and their weak points
From these details you can work out a strategy for completing the level in the
most efficient way.
Page 2 of 28
If you were to create your own computer game, these are exactly the types of
questions you would need to think about and answer before you were able to
program your game.
Both of the above are examples of where computational thinking has been used
to solve a complex problem:
• each complex problem was broken down into several small decisions and
steps (eg where to go, how to complete the level – decomposition)
• only the relevant details were focused on (eg weather, location of exit –
abstraction)
• knowledge of previous similar problems was used (pattern recognition...
• ...to work out a step by step plan of action (algorithms)
Decomposition
Page 3 of 28
To decompose the problem of how to brush our teeth, we would need to
consider:
It is only normally when we are asked to do a new or more complex task that we
start to think about it in detail – to decompose the task.
Imagine that a crime has been committed. Solving a crime can be a very
complex problem as there are many things to consider.
For example, a police officer would need to know the answer to a series of
smaller problems:
Pattern Recognition
Page 4 of 28
Pattern recognition is one of the four cornerstones of Computer Science. It
involves finding the similarities or patterns among small, decomposed
problems that can help us solve more complex problems more efficiently.
All cats share common characteristics. Among other things they all have eyes,
tails and fur. They also like to eat fish and make meowing sounds.
Because we know that all cats have eyes, tails and fur, we can make a good
attempt at drawing a cat, simply by including these common characteristics.
• one cat may have green eyes, a long tail and black fur
• another cat may have yellow eyes, a short tail and striped fur
If we want to draw a number of cats, finding a pattern to describe cats in general,
eg they all have eyes, tails and fur, makes this task quicker and easier.
We know that all cats follow this pattern, so we don’t have to stop each time we
start to draw a new cat to work this out. From the patterns we know cats follow,
we can quickly draw several cats.
Suppose we hadn’t looked for patterns in cats. Each time we wanted to draw a
cat, we would have to stop and work out what a cat looked like. This would slow
us down.
We could still draw our cats - and they would look like cats - but each cat would
take far longer to draw. This would be very inefficient, and a poor way to go
about solving the cat-drawing task.
In addition, if we don’t look for patterns we might not realize that all cats have
eyes, tails and fur. When drawn, our cats might not even look like cats. In this
case, because we didn’t recognize the pattern, we would be solving the problem
incorrectly.
Page 5 of 28
To find patterns among problems we look for things that are the same (or very
similar) for each problem.
For example, decomposing the task of baking a cake would highlight the need
for us to know the solutions to a series of smaller problems:
For example:
Patterns may also exist within the smaller problems we have decomposed to.
If we look at baking a cake, we can find patterns within the smaller problems, too.
For example, for ‘each cake will need a precise quantity of specific ingredients’,
each ingredient needs:
• identifying (naming)
• a specific measurement
Once we know how to identify each ingredient and its amount, we can apply that
pattern to all ingredients. Again, all that changes is the specifics.
Page 6 of 28
Abstraction
We noted that all cats have general characteristics, which are common to all
cats, eg eyes, a tail, fur, a liking for fish and the ability to make meowing sounds.
In addition, each cat has specific characteristics, such as black fur, a long tail,
green eyes, a love of salmon, and a loud meow. These details are known as
specifics.
In order to draw a basic cat, we do need to know that it has a tail, fur and eyes.
These characteristics are relevant. We don't need to know what sound a cat
makes or that it likes fish. These characteristics are irrelevant and can be filtered
out. We do need to know that a cat has a tail, fur and eyes, but we don't need to
know what size and color these are. These specifics can be filtered out.
From the general characteristics we have (tail, fur, eyes) we can build a basic
idea of a cat, ie what a cat basically looks like. Once we know what a cat looks
like we can describe how to draw a basic cat.
Abstraction allows us to create a general idea of what the problem is and how to
solve it. The process instructs us to remove all specific detail, and any patterns
that will not help us solve our problem. This helps us form our idea of the
problem. This idea is known as a ‘model’.
If we don’t abstract we may end up with the wrong solution to the problem we are
trying to solve. With our cat example, if we didn’t abstract we might think that all
cats have long tails and short fur. Having abstracted, we know that although cats
Page 7 of 28
have tails and fur, not all tails are long and not all fur is short. In this case,
abstraction has helped us to form a clearer model of a cat.
When baking a cake, there are some general characteristics between cakes. For
example:
Creating a model
For example, a model cat would be any cat. Not a specific cat with a long tail and
short fur - the model represents all cats. From our model of cats, we can learn
what any cat looks like, using the patterns all cats share.
Similarly, when baking a cake, a model cake wouldn’t be a specific cake, like a
sponge cake or a fruit cake. Instead, the model would represent all cakes. From
this model we can learn how to bake any cake, using the patterns that apply to all
cakes.
Page 8 of 28
Algorithms
In an algorithm, each instruction is identified and the order in which they should
be carried out is planned. Algorithms are often used as a starting point for
creating a computer program, and they are sometimes written as a flowchart or
in pseudocode.
Computers are only as good as the algorithms they are given. If you give a
computer a poor algorithm, you will get a poor result – hence the phrase:
‘Garbage in, garbage out.’
Algorithms are used for many different things including calculations, data
processing and automation.
Making a plan
It is important to plan out the solution to a problem to make sure that it will be
correct. Using computational thinking and decomposition we can break down
the problem into smaller parts and then we can plan out how they fit back
together in a suitable order to solve the problem.
Page 9 of 28
There are two main ways that algorithms can be represented – pseudocode
and flowcharts.
A simple program could be created to ask someone their name and age, and to
make a comment based on these. This program represented in pseudocode
would look like this:
Flowchart symbols
Page 10 of 28
A simple program could be created to ask someone their name and age, and to
make a comment based on these. This program represented as a flowchart
would look like this:
Page 11 of 28
Sequencing in algorithms
• sequencing
• selection
• iteration
These building blocks help to describe solutions in a form ready for
programming.
For example, a very simple algorithm for brushing teeth might consist of these
steps:
It is crucial that the steps in an algorithm are performed in the right order -
otherwise the algorithm will not work correctly. Suppose the steps for the
teeth-cleaning algorithm were in this sequence:
Page 12 of 28
• use toothbrush to clean teeth
• put toothpaste on toothbrush
• rinse toothbrush
A toothbrush would still be used to clean the teeth and toothpaste would still be
put on the brush. But because steps 1 and 2 are in the wrong sequence the teeth
wouldn’t get cleaned with the toothpaste, and the toothpaste would be wasted.
A human would realise they had forgotten to add toothpaste at the start of the
process, but a computer would not know that anything was wrong.
• draw a 3 cm line
• turn left 90 degrees
• draw a 3 cm line
• turn left 90 degrees
• draw a 3 cm line
• turn left 90 degrees
• draw a 3 cm line
The steps in this algorithm are in the correct sequence. This algorithm would
result in a perfect square:
If there was a mistake when designing the algorithm, and the steps in this
sequence were placed like this:
• draw a 3 cm line
• turn left 90 degrees
• draw a 3 cm line
• turn left 90 degrees
• draw a 3 cm line
• draw a 3 cm line
Page 13 of 28
• turn left 90 degrees
This algorithm would create this shape, rather than a perfect square:
Because step 6 is in the wrong sequence (it should switch with step 7), this
algorithm failed. However, fixing the algorithm - and the square - is easy,
because there are only seven steps to look through for the error.
Representing sequencing
• pseudocode
• a flowchart
Representing sequencing in pseudocode
Consider this simple algorithm for calculating how old a dog is in dog years. It
contains three steps, all in sequence:
Page 14 of 28
•
Selection in algorithms
• sequencing
• selection
• iteration
These building blocks help to describe solutions in a form ready for
programming.
What is selection?
Page 15 of 28
Algorithms consist of a set of instructions that are carried out (performed) one
after another. Sometimes there may be more than one path (or set off steps) that
can be followed. At this point, a decision needs to be made. This point is known
as selection.
For example, a simple algorithm can be created to determine correct bus fares.
The steps could be:
IF…THEN…ELSE
If you try the algorithm using 16 as your age, the answer to the question at step 2
is false, so the algorithm tells us to pay full fare.
Two different paths are followed according to the answer given to a particular
question.
Page 16 of 28
Representing selection
• pseudocode
• a flowchart
Representing selection in pseudocode
Look at this simple six-step algorithm for comparing your dog’s age with your
own:
Page 17 of 28
A flowchart uses a diagram to explain the steps of an algorithm.
Consider this simple six-step algorithm for comparing your dog’s age with your
own:
Page 18 of 28
The ELSE IF instruction allows there to be more than two paths through an
algorithm. Any number of ELSE IF instructions can be added to an algorithm. It
is used along with other instructions:
• IF represents a question
• THEN points to what to do if the answer to the question is true
• ELSE IF represents another question
• THEN points to what to do if the answer to that question is true
• ELSE IF represents another question
• THEN points to what to do if the answer to that question is true
• ELSE points to what to do if the answer to the question is false
Using this method, the bus fare algorithm could be improved like this:
Iteration in algorithms
• sequencing
• selection
Page 19 of 28
• iteration
These building blocks help to describe solutions in a form ready for
programming.
Algorithms consist of instructions that are carried out (performed) one after
another. Sometimes an algorithm needs to repeat certain steps until told to stop
or until a particular condition has been met.
For example, a very simple algorithm for eating breakfast cereal might consist of
these steps:
A simple algorithm can be created for cleaning teeth. Suppose a person has ten
top teeth. To make sure that every one of the top teeth is cleaned, the algorithm
would look something like this:
Page 20 of 28
• use toothbrush to clean tooth 7
• use toothbrush to clean tooth 8
• use toothbrush to clean tooth 9
• use toothbrush to clean tooth 10
• rinse toothbrush
Steps 2 through to 11 are essentially the same step repeated, just cleaning a
different tooth every time. Iteration can be used to greatly simplify the algorithm.
Look at this alternative:
The following is a 12-step algorithm for cleaning a person’s upper teeth, and
supposes that they have ten top teeth:
Page 21 of 28
• use toothbrush to clean tooth 8
• use toothbrush to clean tooth 9
• use toothbrush to clean tooth 10
• rinse toothbrush
The condition, in this case, will be to check if the number of teeth cleaned
equals ten. If that condition is False (the number of teeth cleaned is less than
ten), than another iteration occurs. If the condition is True (the number of teeth
cleaned equals ten), then no more iterations occur.
It is also important to keep a count of how many teeth have been cleaned.
The counter can be used to see if the condition has been met. This is known as
testing the condition. The test sees whether the condition is True or False.
If a condition and a counter are included, the algorithm would look like this:
• set number_of_teeth_cleaned to 0
• put toothpaste on toothbrush
• use toothbrush to clean a tooth
• increase number_of_teeth_cleaned by 1
• if number_of_teeth_cleaned < 10 then go back to step 3
• rinse toothbrush
The counter is called number_of_teeth_cleaned, and the condition is ‘if
number_of_teeth_cleaned < 10’. This is very similar to selection as two routes
are created. However, with iteration there is a loop back into the algorithm, rather
than creating and keeping two separate routes as would occur with selection.
Using iteration, the number of steps has reduced from 12 in the first teeth-
cleaning algorithm to just six in the algorithm with iteration.
Amending iteration
Most adults have 32 teeth in total. To amend the original algorithm to clean 32
teeth, another 22 steps (one for each additional tooth) would have to be added to
the first algorithm - making this algorithm 34 steps long. However, in the
Page 22 of 28
algorithm with iteration, all that is needed is to change the condition from ten
teeth to 32. The total number of steps in that algorithm remains unchanged:
• set number_of_teeth_cleaned to 0
• put toothpaste on toothbrush
• use toothbrush to clean a tooth
• increase number_of_teeth_cleaned by 1
• if number_of_teeth_cleaned < 32 then go back to step 3
• rinse toothbrush
Representing iteration
• pseudocode
• a flowchart
Representing iteration in pseudocode
• set number_of_teeth_cleaned to 0
• put toothpaste on toothbrush
• use toothbrush to clean a tooth
• increase number_of_teeth_cleaned by 1
• if number_of_teeth_cleaned < 32 then go back to step 3
• rinse toothbrush
With each iteration, a decision needs to be made as to whether to continue
iterating or not. Decisions are represented as selection.
Page 23 of 28
number_of_teeth_cleaned = 0
put toothpaste on toothbrush
REPEAT
procedure clean_tooth
number_of_teeth_cleaned = number_of_teeth_cleaned + 1
UNTIL number_of_teeth_cleaned = 32
rinse toothbrush
Representing iteration in a flowchart
Designing an algorithm
The key to any problem-solving task is to guide your thought process. The most
useful thing to do is keep asking ‘What if we did it this way?’ Exploring different
ways of solving a problem can help to find the best way to solve it.
Page 24 of 28
When designing an algorithm there are two main areas to look at:
Pseudocode
There is no strict set of standard notations for pseudocode, but some of the
most widely recognised are:
Page 25 of 28
• REPEAT – UNTIL – a loop (iteration) that has a condition at the end
• IF – THEN – ELSE – a decision (selection) in which a choice is made
• any instructions that occur inside a selection or iteration are usually
indented
Using pseudocode
Pseudocode can be used to plan out programs. Planning a program that asks
people what the best subject they take is, would look like this in pseudocode:
REPEAT
OUTPUT 'What is the best subject you take?'
INPUT user inputs the best subject they take
STORE the user's input in the answer variable
IF answer = 'Computer Science' THEN
OUTPUT 'Of course it is!'
ELSE
OUTPUT 'Try again!'
UNTIL answer = 'Computer Science’
Flowcharts
Page 26 of 28
Using flowcharts
Flowcharts can be used to plan out programs. Planning a program that asks
people what the best subject they take is, would look like this as a flowchart:
Page 27 of 28
Page 28 of 28