Introduction to Computation Thinking
by K. Yue
1. Discipline-based thinking
- Discipline-based thinking refers to the process and methods of understanding and applying knowledge within a specific field of study.
- A discipline-based thinking comes with:
- Methods
- Traits and Characteristics
- Values
- The way of thinking in one discipline can be applicable outside the discipline as well as in real life.
Example: Philosophical thinking: one definition: "a method of inquiry that seeks to explore fundamental questions and concepts, relying on reason, analysis, and critical thinking to gain deeper insights into the nature of reality, knowledge, ethics, and the human experience."
- Methods: critical thinking, conceptual analysis, reflection, rational argumentation, ...
- Traits and Characteristics: reasoning, wonderment, curiosity, contemplation, ...
- Values: truth, meaning, rational, ..,
2. Computational Thinking: Key Methods
2.1 Methods of Computation Thinking
- Computation thinking is "a set of problem-solving methods that involve expressing problems and their solutions in ways that a computer could also execute: from wikipedia.
- Four core components:
- Algorithms - developing a step-by-step solution.
- Decomposition - breaking down a complex problem or system into smaller, more manageable parts.
- Pattern recognition – looking for recurring structures in problems, data sets and solutions.
- Abstraction – focusing on the important information only, ignoring irrelevant and lower level implementations details
2.2 Algorithms
- Develop and implement step by step instructions for problem solving. This is probably what most people think about computational thinking.
Examples:
- Python program
- Cooking recipe
2.3 Decomposition
If decomposition is done well, there are many potential advantages. For examples:
- Simplification for easier understanding.
- Reduced complexity.
- Better efficiency.
- Component reuse.
- Better and concurrent task assignments.
There are criteria for good decompositions: e.g., modularity, independence, ease of understanding, ...
We use decomposition in our daily life. CS just takes it to a much, much higher level with various methodologies, formality, tools, etc.
Examples:
- functions
- classes
- modules
- college degree
- ...
2.4 Pattern Recognitions
- Identify recurring patterns and structures to better understand and specify problem and construct solutions.
- Human being relies on pattern recognitions a lot.
Examples:
- Dark cloud -> likely to rain -> bring an umbrella.
- Very dark cloud -> very like to have thunderstorm -> stay home.
2.5 Abstraction
- Focus on essential and high level features. Hide complex lower level implementation and irrelevant details.
- Difference between building X and using X.
Examples:
- In driving, you need to control the engine (by stepping of the gas pedal). An excellent driver does not need to know how the engine work.
- You can call the function input() in Python withoug knowing how the input() function is actually implemented.
3. Computational Thinking: Traits and Characteristics
Some important traits and characteristics of computing science are listed below. This list is not comprehensive. It is more like my personal list.
- Analytical thinking and problem solving: Computing Sciences are arguably the most problem-solving-oriented discipline. Engineering is also very oriented to problem solving but is usually confined in specific areas, e.g., aerospace engineering. Computer science can apply to nearly every area.
- Modeling: Successive models are formed in the process of problem solving in computer science. CS professionals need to understand and model problems deeply. They need to be proficient in listening, communications, exploration,conceptualization, etc. Increasingly, they need to have excellent soft skills.
- High precision, very detail-oriented, and meticulous: to satisfy nuanced problem requirements and exacting execution requirements.
- logical reasoning and mathematical and theoretical foundation: that is the science and engineering part of computer science.
- Adaptability and lifelong learning: Hard to find another discipline that is changing quicker than computer science.
- Curiosity and exploratory: This is crucial in all science and engineering discipline, but even more so in computer science. For good reasons, traditional science and engineering have well-defined and preset laboratories. In computer science, one can and need to set up your own experiments. For example, large language model (LLM) enables all kind of useful experiments.
4. Values in Computational Thinking
- Holistic views of problems and solutions: CS solves real-world problems in diverse application areas. Solutions cannot be judged by a single value (such as correctness in logic). CS needs to consider and balance many assessment metrics: correctness, usefulness, cost, performance, usability, security and privacy, maintenability, etc.
- Data-driven and data sensitive: The main commonality of all disciplines that can be served by CS is data. "garbage in, garbage out" is a popular phase in CS. High quality and relevant data is of key importance.
- Specificity,