P1: Explain how computational thinking skills are applied in finding solutions
that can be interpreted into software applications.
Decomposition
Decomposition is the process which involves breaking down complex ideas, into
smaller, more approachable parts. These smaller parts are then investigated one by
one to help solve a problem. This computational thinking skill is very useful, as it
helps you focus on a single aspect/thing at one time, helping you investigate these
smaller parts in greater detail. Decomposition is used widely across the world, not just
in the computing field.
It also helps set out the start and end point of problem solving. If a problem gets split
in 8 parts, then the people who are solving the problem will be more encouraged to
move onto the next part to see if that is where the problem lies, as they know that
there are only 7 parts left. Without decomposition, no such end point is visible, and
people will not feel encouraged to solve the problem as they were with decomposition
For example, purchasing new furniture and placing it into a room. Decomposition
would be used to help this situation by breaking it down into smaller sections:
Is there sufficient funds to purchase new furniture
What furniture needs to be purchased (Sofa, cupboards, etc)
Where the furniture will be purchased
Where new furniture needs to go (Living room, bedroom)
Will all the new furniture fit into the room
The problem has been broken downed into smaller, more simple parts which can be
managed and solved one by one, making the entire process more simple to solve.
Once all of these parts have been investigated, the furniture can than be chosen and
purchased without any worries or problems occurring.
Without decomposition, situations and problems become significantly harder to
manage or solve. This could be because the situation at hand is too big to be
managed all in one go and becomes too overwhelming for the person/team. If
decomposition isn’t used to solve a problem, it is more likely for mistakes to occur,
and new problems to appear later on whilst trying to solve the original problem.
If a team of programmers had a time limit in which they had to solve a problem by,
failure to use decomposition would increase the chances of them failing to meet the
deadline, as the problem would be too large to handle without breaking it down, and
new problems may occur during the process. However, if they were to use
decomposition, they would most likely be able to solve the problem efficiently, without
any further problems, along with the discouragement of not being able to see the end
point of the problem solving project.
,Pattern recognition
The next computational thinking skill after decomposition is pattern recognition.
Once the problem has been split into smaller parts (decomposition), recurring
attributes and similarities within these parts should be identified. This is called pattern
recognition. This computational thinking skill can be incredibly useful when solving a
problem, as identified patterns within the problem could be similar to ones to
problems that have been already solved. Once this is recognised, the previous solution
to the old problem can be implemented into the new problem, which has a high
chance of solving the problem altogether.
A very basic example would be pairing socks back together. Once socks have been
cleaned and dried, they then have to be paired back up together. To solve this
problem, you would examine the colour of the socks (bundle all the blue socks
together, bundle all the red socks together, etc). You will then examine the patterns
on the blue socks, then pair ones with very similar patterns, then repeat this process
with the red socks. Once that is complete, the problem would have been solved.
There are 5 key steps to pattern recognition:
1. Identifying the common elements/similarities in the problem
2. Interpreting the common differences between the problem
3. Identifying individual elements, such as inputs, iterations (repetitions) that are
within the problem
4. Describing the patterns that have been identified within the problem
5. Making predictions based on the patterns found (How these patterns can be
used for future problems and whether these patterns have been identified
before in a previous problem)
Pattern recognition is incredibly important during the problem-solving phase of a
project. Similarly to decomposition, it saves a lot of time when trying to solve a
problem, reducing downtime. Without it, the time that it would take to solve a
problem would significantly increase, as patterns are not being recognised and
analysed that could be the key to solving the problem.
Pattern generalisation and abstraction:
Once a pattern has been recognised, when coming up with a solution to a problem, it
is vital to only include important information within the pattern. This is done by two
ways, Pattern generalisation and Abstraction.
, Pattern generalisation is the process that occurs when connections between each
pattern is recognised, and a conclusion can be drawn. This process can discover
unseen patterns, as previously it did not appear that the problem had any similarities
between each other. The identification of this pattern could be crucial in solving the
problem.
Pattern generalisation is used widely in every-day life. For example, if you were
planning on getting a bus into the city on Tuesday, but the bus never turned up, if this
had previously happened to you on a Tuesday, you could discover the pattern that the
bus does not operate on Tuesdays. Therefore, your solution would be to get the bus
on a Wednesday instead.
Abstraction is the process of filtering/diluting characteristics from a pattern that are
not needed in order to concentrate on the characteristics that are necessary for the
problem solving.
A prime example of abstraction would be the London Underground map. The map of
the underground does not state the real-life distance between stations, details about
the track, colour of the train, etc, as it is not necessary. All that is needed is to know
what tracks will take you to what stations. If unnecessary information was included in
the map, then it would be a lot harder to use and understand.
Representing parts of a problem or system in general terms:
In order to represent parts of a problem, you first need to identify the variables,
constants, key processes, repeated processes, inputs, and outputs.
Variables – Parts of the problem that changes and allow computations (mathematical
calculations). It is a named value that can change over time. Without variables, the
system would never change.
Constants – A named value that cannot change over time. A fixed-value variable. An
example of a constant found in programs would be the value of pi.
Key processes – Processes that a crucial in understanding a problem/ how a system
works. Without key processes, there will be no understanding of the problem or
system.
Repeated processes – a process that gets repeated within a problem or system
Inputs – Values entered within a system, typically by a user via a keyboard and
mouse on a computer.
Outputs – Information presented on a user’s screen.
P2: Explain how principles of computer programming are applied in different
languages to produce software applications