2.1.1 Computational Thinking - Coggle Diagram
2.1.1 Computational Thinking
This is the process of breaking down a problem into lots of easy and simple tasks
This is helpful because it allows a complicated problem to be reduced to several very easy problems.
This is useful for computer science as when trying to learn about complicated things for instance the CPU, instead of learning everything in the CPU at once a very complex piece of tech. It is decomposed into just the parts like the cache and the MDR.
Decomposition is very useful for programming because it allows complex code to be understood more clearly and also it allows for a timetable to be kept whilst programming so that you don't burn yourself out or barely work on it when you should be.
There could be several times in the day when people are working on a piece of code at once or there could be timetables as to when each programmer is working on the same thing or if they are all assigned different tasks of said program. For instance 1 person could be responsible for tidying up the code and making it more efficient, with another trying to check for errors and the third person continuing with coding.
This can help understand a problem better because it breaks it apart into the very simple components. This makes it easier because knowledge which we might not have for the complex problem, we might have for the simpler broken apart pieces. For instance in a complex maths problem there may be 1 hard solution that you needed to revise for but you don't know. So you break it apart and use 4 different other easier formulas to get the same answer.
Algorithmic thinking is basically just step-by-step plans for solving problems. An algorithm is a starting point before writing a program
This is useful because it almost sets out ground rules to develop from and make large problems much easier to solve.
It would be much easier to understand so if any errors are made in the process of coding you do not have to re read the whole thing and may miss it, however if it is simple you can easily see any errors.
Writing and algorithm before coding can help because if you break down the problem into simple steps then it can be easier to code or solve. Then from that simple code you can easily build on it.
Abstraction is where only important things are processed. So for instance in a SAT NAV only the roads and the car would be shown as the people and trees and scenery are not important to the purpose of the SAT NAV.
Abstracting here would be helpful because the map would be much more simple containing the information that you need, this would also make it quicker to draw and easier to understand for the said purpose.
The dangers of over-abstracting is that it could be too simple for the purpose. For instance, if you were showing a map of a school you could over abstract it to where it just shows empty rooms without what they are used for or called. This would make the map useless as students who need to find their rooms would have to visit every room to work out which is which.
The dangers of under abstracting is that the map could be too complicated and hard to understand. For instance if it was a map of the tube which is usually quite cramped as the line overlap over each other. There isn't much space for other things so either the map would be too massive or there would be very small writing like the average waiting time or the amount of people which is just unnecessary.