Problem Solving Using Computational Thinking
Problemsolving skills seem to be undervalued among engineering and developers, in particular. Getting better at problemsolving can lift your developer career, shape the way you think about problems and accelerate logical thinking. I can't emphasize enough how important it is for engineers. Let's have a look at how problemsolving using computational thinking can help.
Computational Thinking
What exactly is Computational Thinking?
A short definition from Wikipedia is following:
In education, computational thinking is a set of problemsolving methods that involve expressing problems and their solutions in ways that a computer could also execute.
Before programming the solution to a problem, we need to understand a problem and find ways to solve it. This process involves initial thinking about the problem, its limitations, and desired outcome. Our solution, the algorithm, should be logical and wellsuited for a computerbased solution. You need exactly to understand what do you want to tell a computer to do and how better to represent the solution. Thinking through problems this way is Computational Thinking. Computational Thinking allows us to take complex problems, understand what the problem is, and develop solutions. We can present these solutions in a way that both computers and people can understand.
It is an iterative process so many iterations could be possible in the process.
Computational Thinking consists of 4 foundational parts
 Problem Identification
 Decomposition
 Pattern Recognition
 Abstraction
Let's briefly take a look at each of these.
Problem Identification
When identifying problems we need to think about the following:
Topic: What is the big problem we're trying to solve? Can you form a problem statement out of it? Is the problem statement broad or too vague, something unclear?
Data: What data or information do you have at the moment that can contribute to a problemsolving approach? What other data or information you might need?
Feasibility: Can you solve the problem given what you know? Is this problem solvable with a computer?
Decomposition
Decomposition, also known as factoring is a process of breaking down a complex problem/system into smaller solvable subproblems which lead to solving a bigger problem.

You have your problem statement. Can you break your big problem down into smaller subproblems that are more straightforward to solve?

If the problem statement is too big, it is difficult to see how you can go about developing a conceptual solution

If you can decompose your big problem into smaller subproblems, you can start to think about how you can solve those smaller, specific subproblems.

Solving subproblems can help you arrive at a solution for your original problem statement
You can use flow charts, a tree structure, or other visual tools to help with this.
Pattern Recognition
Pattern Recognition is a process of recognizing similar patterns or characteristics that can potentially lead to solving a problem.

Can you identify similar/familiar patterns or characteristics that can lead you to a potential solution?

Finding the similarities or patterns can help us to solve these problems more efficiently.
Things to think about...

Have you seen solutions to similar problems previously that we can use here? Can you think of similar problems that have been solved before that could help you address these problems?

How is this problem the same or different from other problems you have identified or addressed?
Abstraction
Abstraction is a process of identifying
 the most important parts that are relevant to the problem
 nonessential aspects that can be ignored or are not suitable/helpful for solving a problem.
Think about...

Can we identify nonessential aspects of a problem that can be ignored?

This involves filtering out, or ignoring, aspects of the problem or any patterns you might have identified in order to concentrate on the necessary aspect of the problem or potential solution.

Are some parts of the problem less relevant to a successful outcome?
Problem Solving Using Computational Thinking at Coursera
I recently completed a course called "Problem Solving Using Computational Thinking"  University of Michigan and had a lot of fun doing it. I can highly recommend enrolling in it, that's a great start to computation thinking and problem solving for beginners.
The course includes an introduction to computational thinking and a broad definition of each concept, a series of realworld cases that illustrate how computational thinking can be used to solve complex problems, and a student project that asks you to apply what they are learning about Computational Thinking in a realworld situation. This project will be completed in stages (and milestones) and will also include a final disaster response plan you'll share with other learners like you.
This course is designed for anyone who is just beginning programming, is thinking about programming or simply wants to understand a new way of thinking about problems critically. No prior programming is needed. The examples in this course may feel particularly relevant to a High School audience and were designed to be understandable by anyone.
Final Task
The final task of this course was to develop an algorithm responding to a potential natural disaster/critical situation or threat at a known location.
Background and Context
My topic was "Response to a new wave of coronavirus COVID19 (SARSCoV2) pandemic".
I am assuming the role of Governing Mayor of Berlin, Germany, and I have to decide whether or not I should introduce a new lockdown period in response to another wave of coronavirus disease COVID19. I just learned that the number of new cases grew significantly compared to the last quarter and still growing. What actions should I take?
I went through a few iterations of Problem Identification, Decomposition, Pattern Recognition, and Abstraction using a graphical organizer.
Final task was rated 20 from 20 points:
I've completed the course with 100% Grade
Other technics for problemsolving
What other problem technics do you know? How do you approach problemsolving in your daily life, at work, or at home in different situations?
References/Credits/Sources
This article is using ideas, wordings, and quotes from the following sources/authors: