Computational Thinking

The term Computational Thinking is prone to misunderstanding. And the fact that there is still no agreed definition does not help much. So, instead of starting by defining what Computational Thinking is, let’s start by saying what it is NOT.

Sometimes, we hear that it is about teaching people to think like computers do. Surely, this is the most erroneous and confusing interpretation since, nowadays, computers do not think! Thinking is a human activity. The machine only executes the instructions of a program that has been previously written by a person. And this is true even when talking about Artificial Intelligence (another unfortunate term).

At other times, it is said that Computational Thinking is learning to program computers and robots. And, although we are getting closer to its meaning, it is not true either: Computational Thinking and Programming are not the same thing.

This article discusses this difference in depth: https://programamos.es/pensamiento-computacional-y-programacion-no-son-lo-mismo/

So, what is computational thinking?

There are hundreds of texts explaining and defining the term. And, although not all of them agree 100% in their appraisals, almost all of them agree in many aspects.

In this wide intersection of definitions, we find that Computational Thinking is a cognitive ability, that is, something that our brain develops to acquire information, manipulate that information and reason. It has more to do with learning mechanisms than with knowledge itself.

Specifically, Computational Thinking brings together the following skills:

  • The decomposition of problems into smaller ones that are easier to solve.
  • Abstraction, that is, the elimination of superfluous details of a problem and the ability to stay with what really matters.
  • Pattern recognition, which is the ability to find similarities between different but related things.
  • Problem solving through algorithms, i.e., knowing how to find a series of well-defined steps that, when applied to a problem, yield a solution.
  • And, evaluation, which is the ability to assess to what extent both the solution obtained and the procedure by which it is obtained are more or less good.

What does this have to do with programming?

Well, although they are not the same thing, we have already said that they have something to do with it. Programming is an activity that, by its nature, helps to develop the above skills. Indeed, we program computers to solve problems. But, first we must understand those problems, for which we analyze them and decompose them into simpler ones. We create models of reality (abstraction). Looking for common elements between the parts of the problem to organize its solution. And we write a code that is the representation of an algorithm. And we continuously check whether the code and its result are on track.

Therefore, programming computers is clearly a stimulating activity for developing Computational Thinking. However, it is not the only one! Any activity that activates the above cognitive abilities is good for it. Unplugged activities are a good example. In this type of activity, all types of material are used except for the computer. Including the body itself. These activities are especially suitable for early childhood education and the first years of primary school.

One of the best sites dedicated to unplugged activities is https://www.csunplugged.org/, in addition to a wealth of resources and activities you can download the book “CS Unplugged”.

Robotics and physical computing are also activities that have found their place in education, in relation to the development of Computational Thinking. These activities, in addition to using programming, require the construction of physical systems. Which are controlled by a (mini) computer, adding to the previous set of skills, those related to design and manipulation.

Artificial Intelligence and data processing constitute another type of activities that are beginning to be used to develop Computational Thinking. The collection, classification and analysis of data of different nature (images, sounds, numerical series, texts, etc.) to build models capable of recognizing new data, are fundamental characteristics of this type of activity. They especially encourage abstraction and pattern recognition.

Can we define Computational Thinking?

With all this said, we are left with the following definition of Computational Thinking: “it is the ability to formulate and represent problems in order to solve them through the use of tools, concepts and practices of the computer discipline, such as abstraction, decomposition or the use of simulations”.

This definition is the one proposed in the article: Moreno-León, J., Robles, G., Román-González, M. and Rodríguez, J.D. (2019). Not the same: a text network analysis on computational thinking definitions to study its relationship with computer programming. RIITE. Interuniversity Journal of Research in Educational Technology, 7, 26-35.

DOI: http://dx.doi.org/10.6018/riite.397151

Available at: https://revistas.um.es/riite/article/view/397 151/276481

Teaching Computational Thinking to our students will provide them with new tools to solve a wide range of problems in any subject. In fact, it has been considered by some authors as the 5th C of skills for the 21st century, along with Critical Thinking, Creativity, Collaboration and Communication.

This article discusses in more depth the proposal to consider Computational Thinking as the 5th C: https://programamos.es/pensamiento-computacional-la-5-c-habilidades-siglo-xxi/.

On the other hand, as programming and robotics are two disciplines well suited to teach people to think (not like machines, but to solve problems with their help), the fundamental knowledge on which all information and communication technologies (ICT) are based is fostered. This, taking into account the growing impact they are having on society, is a highly valuable element in education as a citizen. It can also serve as an incentive to awaken vocations in the area of ICTs, helping to cover the growing demand for jobs in the sector.

To conclude…

Taking into account that Computational Thinking has more to do with the development of cognitive skills than with the acquisition of specific programming knowledge, its incorporation into the classroom should be done from a transversal perspective, and serve as another tool to enrich and make more attractive the didactic units of all areas of the curriculum.

Learning to program not only helps to develop Computational Thinking, it is also a key activity to acquire a serious digital literacy. And by that, I mean to reach an understanding of the basics of technology to go beyond its consumption and be able to create and understand it.

The interpretation of a highly technological and digital society no longer only requires knowing how to read, write and have some basic notions of mathematics. It will also be necessary to know the basics of programming and computer science, so as not to perceive technology as something magical and to be competent to make decisions when using applications that do not cause us any harm.

Citizens must be attentive to digital development and demand from companies and governments the creation of a fair, transparent and responsible technology. And that cannot be done if we do not know the codes with which it is built, in the same way that we cannot interpret a newspaper if we do not know how to read.

Then…

For all these reasons, we encourage all teachers of all subjects to train in the teaching of Computational Thinking. Not only will they be able to foster the development of skills of great value for the citizen of the 21st century, but they will also enrich their teaching practice with activities that will quickly “hook” your students.

The famous science popularizer Arthur C. Clarke coined a famous aphorism that goes like this: “Any sufficiently advanced technology is indistinguishable from magic”. If we replace “advanced” with “unknown”, the phrase retains the same value. Therefore, it is in the hands of educators to unveil the tricks hidden in the mechanisms of a technology that is increasingly influential in our lives.

In these articles you can read more about what Computational Thinking is.