# Computational Thinking & Algorithms

computational thinking and algorithm, these two subjects are frequently used in programming, data science, and computer science.

This article will be a bit long, but I suggest you read all of them, I’m sure the information here will be useful in your daily life, business life and education life.

## What is Computational Thinking?

We can use computers to solve a problem, such as letting someone in without a password or username. We use computational thinking techniques unintentionally while doing these.

The planning and analysis steps that are done before starting to solve the problem (programming) are all included in computational thinking.

Computational thinking consists of problem recognition, decomposition, pattern recognition, abstraction, and algorithms.

## Computational Thinking Steps

In this section, we will examine some does preliminary preparation stages before a program is created on computers.

###### Step 1 – Problem Recognition

Recognizing the problem is one of the best ways to start a project, first of all, in this section, information about what the problem is and what it does.

After writing what the problem is, a brief information about how to solve the problem is usually prepared in this section.

###### Step 2 – Decomposition

Once the problem is defined, we divide the problem into parts (small parts to do) so that the problem is easy to solve.

Decomposition a problem down into parts can be difficult at times, but usually, every problem contains subproblems, below you can find an example of decomposition.

These schemes may contain more subsections or sub-problems may vary. We have divided the face recognition system into 3 sub-problems so that our work will be easier while coding.

If divide your own problem into sub-parts, your efficiency and speed will increase, and it will also allow you to pass the programming phase faster.

###### Step 3 – Pattern Recognition

When we decompose a complex problem we often find patterns among the smaller problems we create. The patterns are similarities or characteristics that some of the problems share.

This method allows you to solve your problem more easily and effectively and prevents you from wasting your time on pre-built things.

Let’s give an easy example of molds, think of a car. The molds of the car can be a wheel, seat, etc. they do not change, but their features may vary, such as black sofa, such similarities can also be found in problems.

###### Step 4 – Abstraction

We may not need some the sub-fields that we have reserved in the Decomposition section, in such cases we filter unnecessary or less important titles with abstraction.

Let’s take a simple example, you are developing an animal recognition system and currently you just want to distinguish between a dog and a cat. fur color, age of the animal, etc. You may want to filter out unnecessary features.

Or if you want to calculate a loudness, it doesn’t matter whether the voice is male or female, removing this feature will allow you to reach the result faster and you will not waste time on something unimportant.

###### Computational Thinking Summary

Decomposition is breaking the problem into parts and preparing each part as a separate problem.

Pattern Recognition; to save time by using certain same features between problems.

Abstraction; It is to save time by removing unnecessary subsections that will not be used in problems.

## What are Algorithms?

Algorithms are broad enough to be a topic in their own right, which will be covered separately in this article. Some sources also put algorithms in computational thinking.

All of the steps created to solve a problem from beginning to end are called algorithms. Computational thinking steps are linked to a result by algorithms.

Algorithms are formed as a result of the visual or textual preparation of the operating style of the program.

###### Why Should You Use Algorithm?

Some people who are new to programming do not care about algorithms or even use them at all, instead, they try to write code directly with a programming language.

As a result, they either don’t finish any project or they just get bored until they do, but they could easily complete any project if they had planned before they started.

You should use algorithms to help you solve a problem, step-by-step programming is one of the best ways to solve a problem.

## Algorithms For Beginner

In this section, I will summarize the algorithms, talk about how you can create simple algorithms without going into flowcharts, and talk about the logic of algorithms.

I use draw.io to create algorithm diagrams, you can also use a different algorithm tool if you want.

###### Fundamentals of algorithm

There are a few basic rules in algorithms, the first of which is that every algorithm starts with start and ends with the end.

After starting with Start, the first action to be done is written on the screen with a square and connected to the next frame with an arrow.

If there is a condition in the operation to be done, 2 arrows are removed from the square, one is written No, one is Yes, and the algorithm continues in 2 parts.

###### Face Recognition Algorithm

The example we used in decomposition will now be used in algorithms. This algorithm will explain how a face recognition system works from start to finish.

Algorithm functioning; we separate the background, face scan is done, if it is in the data set, the phone is turned on, if not in a warning is given and it is returned to the beginning.

Here, thanks to the long arrow returned to Start, we create a loop so that the user can try face scan again.

## What is Pseudocode?

Let’s briefly summarize the pseudo-code, which is often compared with the algorithm. When used with algorithms, pseudo-code facilitates the programmer’s code writing process.

Pseudocodes are everyday speech-like expressions used in computer science when creating and transmitting algorithms and programs.

## Differences: Algorithm & Pseudocode

An algorithm is a precise specification for how to solve a problem. Pseudocode is an informal high-level description of the working principle of a computer program or other algorithm.

An algorithm helps to simplify and understand the problem. On the other hand, pseudocode is a method of developing algorithms.