What is Computational Thinking
Computational Thinking has different meaning to different people, but there is no doubts that the fundamentals of Computational Thinking is the power and limits of computing process, whether they are executed by a human or by a machine.Computational Thinking is not the ability of mathmatic computing or the ability of using computer.Computational Thinking open up new ways for us to think of hard problems , design comlicated systems and comprehend hunman's behaviours which can not be finished alone.Then the definition of Computational Thinking was updated that it involves five basic parts: algorithms, decomposition, abstraction, pattern recognization and generalization. Jeannette M. Wing(2006)
Every Steps'meaning in Computational Thinking
As mentioned in the part upon, we know there are five basic elements in Computational Thingking.
Decomposition: split a huge problem into several little problems.
Abstraction: select out the most important details of problems and ignore the details which has weak relationship to solving problems.
Pattern recognization: find the similarity of differnt little parts of a huge problem to simplify the progress, and remember the differences to solve the huge problem totally.
Generalization: make the methods to solve specific problems adapt to problems similar to them.
Algorithms: creat methods with clear and step-by-step logic to solve problems.
How can we use it in daily life
Actually i am a fan of FromSoftware and the series of Dark souls is my favourite games. When i played these games, i do not know Computational Thinking. But now, i think Computational thinking may give me great assistant in game.
In soul like games, there is only a vague goal regarding as a huge problem. Then I can decompose it by maps into several areas such as: Lothric and Irithyll in DarkSoulsâ…˘, Anor Londo and Oolacile in DarkSouls.When I fight in every maps, there are many similar patterens: handling enemies, finding ways to the boss or other maps, collecting materials, finding npcs and completing side quests.For abstracting, the main thing to clear stages is how to fight varies enemies, so we can abstract fighting out by weapons' choice, such as: staffs, swords, bows or other weapons. To defeat enemies easily, generalize different schemes to specific enemies, like fire for beasts, shiled for knights and so on. At last, I should choose reasonable algorithms. When I find it hard to beat enemies, I could promote character's level, strenthen weapons before fight, and think of enemies' weakness, trick, even AI to find out the best time to attack and dodge. In some cases I could summon the phantoms for help. These steps upon help me to make a distant and complicated goal - stage cleared - more clear.
Except for playing games, I also use computational thinking in cooking or programme and other problems in my daily life.
Practical applications in society
There are many successful examples in our society, actually we can see many usage of computational thinking in many projects and applications.
One of the obvious example is the design of google -- one of the most frequently used search engine. It needs to process billions of web pages and deliver precise results within fractions to users of little time. Decomposition helps handle enormous data, pattern recognition detects user search behaviours, abstraction filters out irrelevant content, and algorithmic thinking enables the search engine to rank websites based on relevance and popularity. This real-world application epitomizes the importance of Computational Thinking in Computer Science. StudySmarter
Importance in code sduty
In the sdudy of programme, Computational Thinking help me to decompose a whole problem into several parts, not confused with the functions the problem ask me to accomplish. One of the example is the progress to make a function to get a specified number in Fibonacci sequence. First, I can decompose the function into three parts.Because Fibonacci sequence's two numbers on the head is 0 and 1, In the first part I assign 0 to x, and 1 to y, input to n -- which number I want to know its value. Then I should know how to calculate the exact number in Fibonacci sequence. In this stage I should repeat a progress: assign a new variable v = x + y, output z if this number is what I need and break the repetition, or I should assign y to x, z to y and repeat this progress. This part shows the usage of algorithms and generalization. As a result what I need in this part is a loop. The last part of this function is the easiest part: output or print the result. Because the future career in my dream is to become a designer of a game, which is a much more complex project with millions of functions like the function upon than I have completed by now , Computational Thinking will show more effect.
References