**Computational thinking** is the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computer—human or machine—can effectively carry out. A few characteristics of CT (this points are especially for K12):

- Using abstractions and pattern recognition to represent the problem in new and different ways
- Logically organizing and analyzing data
- Breaking the problem down into smaller parts
- Approaching the problem using programmatic thinking techniques such as iteration, symbolic representation, and logical operations
- Reformulating the problem into a series of ordered steps (algorithmic thinking)
- Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
- Generalizing this problem-solving process to a wide variety of problems

**Computational thinking** is made up of **four** parts:

i. Decomposition.

ii. Pattern recognition.

iii. Pattern generalization

iv. Abstraction.

**The criticism**

https://www.wired.com/2016/09/how-to-teach-computational-thinking/ define “computational thinking.” Its intellectual core is about formulating things with enough clarity, and in a systematic enough way, that one can tell a computer how to do them. Mathematical thinking is about formulating things so that one can handle them mathematically, when that’s possible. Computational thinking is a much bigger and broader story, because there are just a lot more things that can be handled computationally.

But how about when we are in a position when the situation which doesn’t have enough clarity and ill-structured? where the situation is always uncertain and complex? When we try to handle the complex situation using complicated approach – clearly mismatched.

Furthermore, ^{[18]} Others worry that the emphasis on Computational Thinking encourages computer scientists to think too narrowly about the problems they can solve, thus avoiding the social, ethical and environmental implications of the technology they create.^{[19]}^{[2]}

**To handle the complex challenge and the narrow mindset – it is important to incorporate CT with design thinking and systemic thinking.**

This is because, design thinking attempts to understand the intent or problem before looking at any solution . It emphasize the importance to identify why the problem exists in the first place before solving it. Incorporating CT with design thinking will help to clarify and frames the problem in a whole new light. By broaden the horizons, an innovative solutions might arise without thinkers terikat dengan specific solution that might be wrong and not effective.

However, being creative without systematic approach might bring the thinkers to nowhere. applying CT, we can bridge ideation into realization.

**Phase 1: Identify the Problem**

- Using abstractions and pattern recognition to represent the problem in new and different ways (visualize – sketch using structure).
- Logically organizing and analyzing data
- Breaking the problem down into smaller parts

**Phase 2: Solution**

- Reformulating the problem into a series of ordered steps (algorithmic thinking)

**Phase 3: Evaluation**

- Approaching the problem using programmatic thinking techniques such as iteration, symbolic representation, and logical operations
- Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources.
- Generalizing this problem-solving process to a wide variety of problems? Can it be generalize or not?