What is Computational Thinking?

What is Computational Thinking?

A flowchart for creating a website biography.

Computational thinking is, pretty simply, an advanced mental tool that we can use to assess and solve problems. We can take almost any problem - from organising a bachelor party, to specific computational problems. While useful in both circumstances, it’s going to be infinitely more valuable to me in terms of my Computing course, so it’ll be best to pull an illustrative example from there.

Imagine I’ve been tasked to create a website that provides a brief biography of an influential politician. I can’t just create one on the spot, because there’s things I need to work out first. Such as: who am I going to pick? how should it be formatted? how do you even make a website? etc. By taking a step back to decompose the project into smaller pieces I’m making the overall project more manageable – at least I’m giving the way I approach it some structure.

Once you’ve got your smaller problems, it’s worth checking to see if you’ve encountered any of them already. I’ve made plenty of websites before, and written biographies before, so there is very likely going to be some similarities when making this one. For example, in terms of formatting the website, I know that I’ve previously had problems with image alignment, so I could look at how I’ve previously solved that and apply a similar fix. This process is pattern recognition.

Once you’ve got your problems, and you know which ones you’ve solved before, you can start to make sure that you focus on the ones important to your project so that you aren’t wasting time. Consequently, the next step is abstracting all the strictly relevant problems to focus on, to make sure that your head doesn’t explode trying to focus on a hundred unimportant things. I’ve never had to worry about the font for example, so I can ignore that problem.

This brings us on to the very last step in computational thinking, formulating a reliable step-by-step solution to all of these problems. There’s a bunch of ways to structure this algorithm, pseudocode and algorithms are common. A rough algorithm for creating the biography might look something like Figure 1. It’s worth noting that ensuring repeatability by evaluating your algorithm is arguably one of the most important parts of computational thinking, as it's indicative of a successful use of the process.

How important is computational thinking?

The importance of computational thinking to a career and academic course are very similar, as much benefit of computational thinking is directly linked to improving your critical thinking skills. Knowing how to approach a problem is just as important as knowing how to solve it, something that employers and students alike can sympathise with strongly. This is only exaggerated when you consider the specific applicability to computational careers and studies, as you’re able to break projects into simple instructions that could be translated directly to a computer.

In terms of explicit applications of computational thinking to my course, I have a specific assignment in my software engineering module that requires me to look at a problem, and then create a solution and business plan in response to it. In this case, problem decomposition will be incredibly important at several stages, as building a business plan relies almost entirely on the ability to discriminate problems/ solutions/ target audiences etc. in order to create a competent and modular plan. Furthermore, remembering pattern recognition and abstraction techniques will be perfect when considering comparative companies and solutions – the business plan itself being a literal step-by-step plan to solve a problem.