Computational Thinking

Illustration of a woman's head looking to the right and surrounded by lines from a digital environment. The silhouette of a brain can be seen on her head

Computers did not become an important part of our daily lives until very recently. But the science behind them has been gravitating around us for centuries. And not necessarily in laboratories or university classrooms.

The processes involved in Computational Thinking (CT), the science that serves as the basis for the work of computer scientists, can be found in any aspect of human life. From commuting to the office to preparing lunch. You do not need a computer to do some CT, just self-awareness, reflection and attention to detail.

CT has been defined as “the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent” (Cuny, Snyder, Wing 2010). Or put in simple words: a reflection on each of the steps we take to understand a problem and find a solution, so that this solution can then be communicated to a machine that will be able to follow those same steps to solve that problem.

Since the moment we wake up, we start solving problems such as heating the milk we will use for our morning coffee or deciding what to wear. If we were to teach a machine how to do these things, we would have to begin from the most basic action involved in these processes: open the fridge, look for the milk, take it out, close the fridge, pour the milk in a cup, open the microwave door, put the cup in, close the door, press the one minute button twice… They might seem too obvious for us, but a machine has not been preparing coffee for the past 20 years like we have. Likewise, if we do not tell a machine that sleeveless dresses should not be worn when the temperature is below 20°C unless accompanied by a warmer garment, we could end up with the machine choosing a summer dress for a snowy winter day.

Computational Thinking consists of detecting what information is needed to solve a problem, and finding the most simple and effective way of providing this information so that this problem can be solved without our intervention. In this sense, there are at least four processes at the core of CT: decomposition, pattern recognition, abstraction and algorithm (BBC Bitesize). In this assignment, we will mention one more step known as generalisation.

Decomposition:

The very first step to take when doing some Computational Thinking is to treat a problem as if it were complex, and break it down into its most simple parts. The objective is to have smaller bits of the problem that can be more manageable.

Pattern recognition:

Once we have these more manageable parts, they need to be studied in search for a pattern that will help us turn many problems into a single one. Patterns also let us assess the characteristics of the problem and know what to expect.

Abstraction:

The process of abstraction can be compared to that of filtering: only the relevant information is kept so that, as mentioned, many problems can be treated as if they were only one.

Generalisation:

Unlike the other three processes, this one is not always mentioned when talking about CT. But it is very important since it is by generalising that we are able to find a solution that will not only solve a problem once, but that may come in useful more than once.

Algorithm:

This process consists of designing a “step-by-step solution to the problem” or algorithm (BBC Bitesize). A set of instructions that can be easily followed by a computer to solve the problem.

The process of Computational Thinking will be very helpful for my career. As a data journalist, I am expecting work in long large collaborative projects to be an important part of my work. Moreover, I expect to be dealing with big data to detect trends or extraordinary events in it that could lead to newsworthy findings. Both elements will present complex problems that I am convinced Computational Thinking will help solve.

In the next weeks and months I will be having to program in Python and JavaScript and both languages require a lot of specificity, with detailed instructions on how to proceed. The processes involved in CT will be fundamental to know what the code requires me to tell it, to do it in the most simple way and to make sure that all the essential steps, no matter how irrelevant they may seem, have been included within the instructions.

The logic contained in CT may also come useful when organising workflows and teamwork. But above all it is a great approach to complex problems that can be applied in all fields, including our personal life.