Computational thinking is a procedure that every human can do to solve complicated
problems. An example of this is when a person decomposes a complex problem into
segments making each portion more manageable; hence being simpler to apply a rational
resolution to the problem. The process of computational thinking doesn’t only help a
programmer but makes the code readable for a machine to understand and execute.
Decomposition:
Decomposition is a process of computational thinking. This is where you have to dissect a big
problem into smaller tasks to make the whole dilemma more approachable. To utilise this
strategy, you have to recognise and describe the obstacle and procedure and how it will
benefit unravelling the problem. Then you will start breaking down the problem into smaller
chunks, which will allow you to describe them with even more understanding and create a plan
full of organised stages based on importance. Reasons why decomposition is used:
1) Easier to focus on a particular thing rather than focusing on a broader problem and not
knowing where to begin.
2) Dissecting a problem will enable a user to be able to examine information in more
detail.
3) The tinier the task is, the easier it will be for someone to understand and fix the
problem.
4) Rather than a big problem being overwhelming, a smaller more manageable problem
will allow priorities to be set for a specific task.
In general, every day people use this process without even realising it. For example, I want to
go to Birmingham, I will have to decide what sort of transport I will use to get there. I could use
a car, plane, coach, train to get there. Then I will have to dissect which one I’m going to
choose; (The price, how quick I will get there, etc). As you can see, I broke down the problem
into smaller problems to get to ‘Birmingham’, Comparing to just solving the problem without
breaking it down to decomposition. It is way harder if the problem is not broken into smaller
tasks because it could be too overwhelming for people to confront the error straight away. In
addition to this, people who don’t use decomposition make mistakes more often since they
tend to not break the task down, therefore, missing details.
,I believe decomposition is crucial for every big task or problem someone is facing. This
process is simple and effective; people naturally do this. The method undoubtedly reduces
unnecessary anxiety and time wasted on tasks. Most people underestimate the process or
don’t know about it, making life less productive for the uneducated. Solving a small problem
will also make the person feel as if they are achieving something which makes them want to
keep going. Psychologically the effects on a person who uses decomposition are positive
since it makes them feel like they aren’t useless, and to not give up on the task. Programmers
use decomposition when given a big problem, and so they simplify the issue into sections to
make the code easier to understand. A programmer cannot solve the problem progressively
without the breaking of the code. Once all tasks are completed they can be connected to the
code back once finished.
Pattern recognition
After the problem has been dissected, you will have to analyse the smaller problems to
discover any resemblances or patterns.
Patterns are just characteristics that can be found anywhere, (all computers have a
motherboard, processor, ram sticks, power supply, etc). By knowing these types of
characteristics, we can try to replicate them. The only differences between every computer are
the key features that are unique to the object. For instance, computers can differentiate in size
and quality. People generally only know computers as a useful technology and don't think
about the key features of the object.
Reasons why people utilize pattern recognition:
1) Problems are more straightforward to solve if they share the same characteristics
which allow you to apply them to other problems.
2) By finding more patterns, the more understanding you will have for solving the
problem meaning the easier it will be.
3) If we try to reproduce an object or describe it, we can find its main features (patterns)
to make the whole task easier.
4) We know each object has a pattern so we don’t have to create unique objects every
single time.
5) When designing new objects, you can use existing patterns of similar objects.
Comparing pattern recognition to simply making unique patterns every single time to meet
some similarities. Pattern recognition is a lot easier and widely used than any other process.
It's commonly used in factories, where computers create objects that fit the same design. If
factories couldn't use a pattern to produce products, they would make more products with
errors. Also, without pattern recognition, you could not use machines to manufacture
anything, because it’s impossible for them to produce something unique each time. They have
to copy a specific pattern. without the use of machines, the production rate will decrease,
therefore pattern recognition is vital.
Pattern recognition is a decent method for looking for connections of objects or tasks and
applying previous knowledge to create the same resolution. By identifying patterns anywhere
in life, you become more accustomed to things and less lost by unnecessary factors.
Occasionally answering some problems immediately or implementing solutions from previous
patterns to understand how to move forward. Babies use pattern recognition as they copy
patterns through observing how their parents speak, walk, behave, etc. And they slowly
discover those patterns and apply them so they know who their parents are. Programmers use
pattern recognition when they have found the same problem in the previous code and fixed
the issue, then using this to resolve the new problem.
, Generalisation and abstraction
After observing a pattern, it is useful to only have in the pattern what is the most important
and exclude pointless information. You can do this by applying the processes of
generalisation and abstraction.
Generalisation – the process of following the pattern and ignoring confusing details.
Abstraction – the process of filtering out unnecessary characteristics to concentrate on more
important ones.
Generalisation and abstraction have some similarities in their purpose. The primary purpose
of generalisation and abstraction is to simplify complex processes by ignoring confusing
details and filtering out unnecessary characteristics. For example, humans have main
characteristics such as walking on two legs, have two arms, one head, a torso etc. These
characteristics are fundamentals and not as detailed but, is still enough to assume that it’s
probably a human and all other information that comes after its unnecessary detail that can be
filtered out.
Reasons why you should use generalisation and abstraction:
1) Makes patterns easier to understand when unnecessary details are removed.
2) Saves time.
3) Helps to focus on what is important and prevents you from side-tracking from the main
task.
Comparing generalisation and abstraction to using any other method.
These processes make tasks as straightforward as possible. Generalisation and abstraction
help programmers to stay focused on the main task and not to sidetrack to less important
tasks. Time-saving is important in all tasks so methods like these are good for programmers to
be more efficient.
In my opinion, generalisation and abstraction are essential for saving time and maintaining
focus on the most relevant tasks/details so that programmers don’t go off track. This type of
thinking promotes people to observe problems and see what details are irrelevant. The
processing of thoughts can help anywhere in life, not just computing. Programmers use
processes like generalisation when talking to a client. For example, a client could say how he
wants a program to help him convert imperial and metric units interchangeably and wants the
program to look aesthetic. The programmer should purely focus on the programs function as
it is most important. ignoring the fact of how the program is going to look as it isn’t a high
priority.
Representing parts of problem/system
Programmers need to identify what is required to unfold the dilemma they are facing. Once
making a plan, they should see which solutions are more logical for solving the problem and
how effective they will be.
Why is this important?
This example of computational thinking is vital for a programmer since it helps understand
and overcome problems by distinguishing what is required for the solution. Getting tools for a
job is always relevant to solve a task. Many other job areas do this not only in computing.
E.g., Mechanics, builders, electricians etc. They all first examine the problem/task and
determine based on it, what kind of tools they will use to solve it.
Tools that are used for solving problems up building systems: