Slides in Computational thinking
Computers can be used to help us solve problems. However, before a problem can be tackled, the problem itself and the ways in which it could be solved need to be understood.
Computational thinking allows us to do this.
The breaking down of a system into smaller parts that are easier to understand, program and maintain.
Finding similarities and patterns in order to solve complex problems more efficiently.
The process of separating and filtering out ideas and specific details that are not needed in order to concentrate on those are are needed.
Developing a step-by-step solution to the problem, or the rules to follow to solve the problem
Each cornerstone is as important as the others. They are like legs on a table - if one leg is missing, the table will probably collapse. Correctly applying all four techniques will help when programming a computer.
A complex problem is one that, at first glance, we don't know how to solve easily.
Computational thinking involves taking that complex problem and breaking it down into a series of small, more manageable problems (decomposition). Each of these smaller problems can then be looked at individually, considering how similar problems have been solved previously (pattern recognition) and focusing only on the important details, while ignoring irrelevant information (abstraction). Next, simple steps or rules to solve each of the smaller problems can be designed (algorithms).
Finally, these simple steps or rules are used to program a computer to help solve the complex problem in the best way.
Thinking computationally is not programming. It is not even thinking like a computer, as computers do not, and cannot, think.
Simply put, programming tells a computer what to do and how to do it. Computational thinking enables you to work out exactly what to tell the computer to do.
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 favourite 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, what would you need to decide?
What you could do
Where you could go
Who wants to do what
What you have previously done that has been a success in the past
How much money you have and the cost of any of the options
What the weather might be doing
How much time you have
From this information, you and your friends could decide more easily where to go and what to do – in order to keep most of your friends happy. You could also use a computer to help you to collect and analyse the data to devise the best solution to the problem, both now and if it arose again in the future, if you wished.
Another example might occur when playing a videogame. Depending on the game, in order to complete a level you would need to know:
- 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.
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)