Brian
Level 41

# Code to Success and Vital Skill for 21st Century Workers. What is Computational Thinking?

A number of things make CodeGym the best online course to learn how to code in Java from scratch (in our eyes at least): carefully planned course structure, practice-first approach, enormous number of tasks (over 1200), exciting and funny storytelling, social features, etc. But we like to think that us going extra mile to help our students succeed is what makes CodeGym the best. Our mission is not just to help you learn Java and find a coding job after (or while still in the middle of the course), but to support your development, both personal and professional, with the appropriate knowledge and information.

## What is Computational Thinking?

Computational Thinking (CT) is a concept that industry experts call a ‘code to success’ and ‘vital skill’. Even though it is relatively simple, CT can be helpful far beyond just software programming. The term was first proposed in 1980 by Seymour Papert, a mathematician and computer scientist, as a way to solve various programming-related problems and tasks more efficiently. Computational thinking is a set of methods that involves taking a complex problem and breaking it down into a series of smaller problems that are easier to manage, as well as expressing the essence of a problem and the solution in ways that a computer could execute. Simply put, before you start coding to teach a computer to solve a specific problem, you would normally need to make sense of the problem yourself, find a solution, and only then teach a computer to deal with it. Computational thinking is a method to make this process faster and easier, but it isn’t limited just to programming and can be applied to various parts of our life. Even though this concept was introduced back in 1980, computational thinking has begun gaining mass attention after Jeannette Wing, a computer science professor at Columbia University, proposed to make CT a part of the school curriculum as one of the fundamental skills that all people should possess.

## How Computational Thinking works?

Computational Thinking as a technique consists of four main methods, which are decomposition, generalization/abstraction, pattern recognition / data representation, and algorithms. They are all equally important and effective when applied (to a problem) in the right order.

### Decomposition.

You start with decomposition, which is separating a problem into a number of smaller problems that are easier to solve one by one.

### Abstraction (generalization).

Then you proceed to a specific task/problem, focusing exclusively on the information that is important to solve it and ignoring all the rest.

### Pattern recognition (data representation).

Next step is looking for similarities between the problem you are currently working on and other problems that have been solved previously (with the solution available). The goal is to find patterns that can be applied to your current task.

### Algorithms.

And finally, having the results of applying previous steps in place, you develop an algorithm for a step-by-step problem solution. An algorithm then can be executed by a computer (or your brain, which is the ultimate computer solving tasks in your life).

## Using Computational Thinking

Knowing how to use CT when dealing with issues and tasks the majority of software developers deal with on a regular basis can be extremely helpful throughout your career in coding. “Computer science is not computer programming. Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction. Computational thinking is thinking recursively. It is parallel processing. It is interpreting code as data and data as code. It is type checking as the generalization of dimensional analysis. It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name. It is recognizing both the cost and power of indirect addressing and procedure call. It is judging a program not just for correctness and efficiency but for aesthetics, and a system’s design for simplicity and elegance,” explains Jeannette Wing in the 2006 paper on the importance of learning computational thinking and teaching it to all college freshmen. As you can see, computational thinking isn’t meant just for programmers and computer scientists. It is used by people (often unconsciously) in all kinds of professions both to solve work-related problems and in daily life. Here’s a quick guide on how to start applying computational thinking to either coding tasks or pretty much any serious problems you might be dealing with in your personal life.

### Applying decomposition.

Decomposition is quite a simple but powerful technique, which can help you to deal with problems/tasks that seem too complex at first glance, and thus often cause procrastination and other difficulties. The key here is to train your brain to use decomposition on a regular basis, dividing a task to a number of smaller tasks that are easier to solve. Even though decomposition may seem like a very simple and even obvious method, you’d be surprised how many people are not aware of it, which makes it so much more difficult for them to start working on big, global tasks (like learning Java, for example).

### Applying abstraction.

Knowing how to apply abstraction is a powerful ability if you know the technique and have trained your brain to use it unconsciously. Abstraction is about focusing exclusively on the information that is required to solve the task while ignoring everything else. Used in combination with decomposition, it is basically the method to approach pretty much any problem or issue in your life. When dealing with strictly programming tasks, abstraction helps to concentrate and avoid your brain being exhausted too quickly.

### Applying pattern recognition.

Pattern recognition is quite an important skill in coding, as it allows you to solve tasks much faster by applying thinking patterns that your brain is familiar with and comfortable using. It is also a powerful technique to apply to general life problems: just try to analyze any issues you are facing in your life and find (and borrow) patterns from those parts of your life that work satisfactory, transferring them to the current problem.

### Applying algorithms.

When you think about it, our life is all about forming algorithms. We call them habits. Our brain tends to rely on habits every single day, just because it is more efficient and thus, practical. The only problem is most of us tend to do this unconsciously, which often results in forming wrong and harmful algorithms (we call them bad habits or addictions). Knowing how to form useful algorithms consciously can be an extremely beneficial life skill, allowing you to achieve your goals and be successful. When it comes to programming, knowing how to form an algorithm to solve a particular problem in the most quick and efficient way is what differentiates a person who just knows how to code from an experienced professional computer programmer.

## What do experts say?

In conclusion, here is what some recognized computer sciences experts have to say about Computational Thinking. According to James Lockwood and Aidan Mooney, professors at the University of Maynooth in Ireland and authors of ‘Computational Thinking in Education: Where does it fit?’ report, computational thinking “is a vital skill for 21st century workers.” “Although a lot of research is being conducted into teaching both CT and CS [computer science] in schools, lots of third level students will never have been exposed to these concepts. It is important that both CS and non-CS students have good problem solving skills and CT can greatly benefit this. Many different methods have been proposed and it seems like a non-compulsory CT course for both CS and non-CS students is a particularly effective and useful method. This requires backing from both administration and teaching staff but the benefits listed both in this section and in Section 7 show that it can be beneficial to all involved. There is also a huge range of ways to teach CT in college contexts, although what most have in common is a more practical, discussion-led courses, and most of these methods seem to be successful. It is thought that, perhaps, CS students will benefit from this as it makes the transition to “traditional programming” easier for them,” experts say. Conrad Wolfram, a renowned British techno expert and entrepreneur, also advocates for teaching computational thinking in colleges, and even calls it ‘the code to success’: “Computational thinking is the code to success. The computer-based problem-solving process is so powerful in addressing real-life challenges that it should be a core educational subject. At least if you, like me, agree that the fundamental purpose of education should be to enrich our lives by finding the most effective solutions to problems of any kind.” What do you think? Does Computational Thinking seem to you like something you should be practicing more in your life? Share your thoughts with us in the comments section below!