Definition of Computational Thinking
As mentioned by Xu & Zhang (2021) , since Computer Science is an academic discipline studying the computational processes in solving different problems, Computational Thinking is actually the way of thinking of the computer scientists. In addition to the above definition, Computer Thinking is also defined in a broader way. “Computational Thinking involves solving problems, designing system, and understanding human behaviour, by drawing on the concepts fundamental to computer science” (Wong J., 2006) .
Processes of Computational Thinking
Processes of Computational Thinking were taught in this module:
  • Decomposition – breaking down a problem into set of smaller problems
  • Pattern Recognition – identifying similarities among problems which will help us make prediction
  • Abstraction – preserving information that is relevant in a context, while suppressing information that is irrelevant in that context of problem solving
  • Generalization – identifying shared among problems such that models could be adapted to the them
  • Algorithm Design - a sequence of steps for solving a problem
After having preliminary understanding of the definitions and processes of Computational Thinking through the readings and the lectures in this module, I will solve problems in a Computational Thinking way throughout the course this year and my future career as well as daily life.
Computational Thinking in Daily Life
Before I arrived in UK this year, I was living with my family. My parents love cooking and they cook most of the time. Therefore, cooking for myself, especially for everyday meal, is quite a challenge to me. I have been doing “intensive training” of cooking in this 2 months after my arrival, in which Computational Thinking has already been applied.

This is actually a daily problem solving practice of using Computational Thinking. I have to decomposed the problem into subtask: searching recipe, buying ingredient, recording the expiry dates, and different steps of cooking such as chopping, seasoning, boiling and stir-frying etc. I have to do pattern recognition to inspect how the ingredient react to various cooking process. After that, generalize different cooking operations combining for making better meal, like using Camembert for baking, Parmigiano for Carbonara, putting raw egg under lower temperature (eg. cooler pan or spaghetti) and seasoning with white wine before frying the meat. For abstraction, how to generate heat with different ways is abstracted out by cooking utilities such as stove and oven I am using.

In addition to cooking, there are many other problems in daily life or other situations can also be solved using Computational Thinking.
Computational Thinking in Computing
When it comes to the problems in Computing, Computational Thinking will be frequently used. I remembered when I was making a simple 2-players web game based on a cellular automation rules of Conway’s Game of Life (Roberts, 2020) , I accidentally used the decomposition process of Computation Thinking. To make a 2-players game, I decomposed the problem as sub problems being addressed by respective sub functions, such as function of calculating positions of the next generation of cell, function of rendering the cells, functions of listening to players actions, function of calculating scores etc. With all sub-functions being written, the sub-problems were abstracted and I could focused on doing the bigger logics using those functions. For pattern recognition, it could already be applied to a simple JSON object serializing function, in which the pattern of JSON structure have to be realized through different signs (eg. “,” separates pairs, “:” separates key and value).

Thus, concepts of Computational Thinking will definitely be helpful when it comes to design good algorithms for solving more complicated problems I will faced in the future.
References