# Computational Thinking

## What is Computational thinking

- Formulating problems in a way that enables us to use a computer and other tools to help solve them.
- Logically organizing and analyzing data.
- Representing data through abstractions such as models and simulations.
- Automating solutions through creating an algorithm.
- Generalizing and transferring this problem solving process to a wide variety of problems.

## What does this mean

Often how you approach a problem can actually help you to solve the problem itself. Having an understanding of computer science should have exposed you to algorithms, data structures, abstraction, automation, and implementing your solutions. We can use these to solve problems in other areas as well as computer science.

So looking for the underlying processes within a scenario will allow you to understand how the task is currently performed. Often the system you need to create is currently in operation, just not electronically with a computer system. The term computer is a shortened version of human computer, some of these tasks have always been completed by a group humans working together.

Algorithms are really the instructions required to solve a problem, so if we can write an algorithm we can solve the problem at hand. We could then look at the most efficient way to implement your solution, this could be looking at software structures such as procedures and functions.

As well as software structures, the appropriate data structures can often help to solve the problem. Some data structures will lend themselves to specific tasks, and some data structures may have the required operations pre programmed within them.

Another key part of computational thinking is to realise when something is not important. The idea of abstraction is to remove the unnecessary details within a problem until the problem becomes solvable.

Finally, if you have designed a solution for a problem you will clearly need to test it. Ideally you will test it before it starts to be used because you may have made mistakes in your algorithm, you may have made errors coding your solution, or you may come across unforeseen issues.

## What do you need to know

The specification states you must:

- Be able to develop solutions to simple logic problems.
- Be able to check solutions to simple logic problems.