Why Computational Thinking?

Sujeet S
Abhyasu
Published in
4 min readSep 20, 2021

--

The term Computational Thinking has been consistently used in the field of computer education. It was first coined in 2006 by Jeannette Wing, a computer scientist from Columbia University. She proposed a “universally applicable attitude and skill set”, often displayed by computer scientists, that utilizes “abstraction and decomposition” as a means to carry out tasks that have a high level of complexity. That’s quite a mouthful for the uninitiated! But what exactly does the term computational thinking mean, and how is it different from coding?

Computational Thinking may mean different things to different people, but it is a skill set that every child needs to know if they are to succeed in whatever future career they choose, whether it is a career in coding or not. In this article, we will try to lay out a child-friendly description of what the computational thinking skill set is actually all about.

Let us start by first looking at what computational thinking is NOT. Although the words may suggest so, Computational Thinking does not mean “thinking like a computer”. Nor does it mean “performing calculations as fast as a computer”. Instead, computational thinking is a way of structuring and solving a problem by using the immense processing power of a computer.

A Real-Life Example

School subjects are a part of every child’s daily life. Depending on their age, children may have not just one or two, but eight or ten different subjects to deal with each day, with each subject having different topics and different assignments.

Keeping tabs of which subjects are scheduled for which day along with the assignments for each subject is best maintained by some sort of timetable or tracker. But all this information can easily overwhelm a child. Additionally, a child also needs to keep track of the assignments that are completed for each subject, and any new ones assigned along with their due dates.

The above problem is a very real problem faced by many children and parents. What if we could have a robot solve this problem for us more efficiently? The task of the robot would be to automatically tell us the subjects coming up for the next day, any assignments that are due, and any subjects we don’t need to worry about for the next day.

To help design this robot, let us employ the computational thinking methodology. Let us start by breaking down the problem into its constituent parts by listing down everything we know about the problem. We could start by listing the following:

  • Name of Teacher
  • Name of Student
  • Name of Subject
  • Name of Assignment
  • Date of Assignment
  • Assignment Due Date
  • Assignment Completion Flag

Looking at the list above you might say that some items in the list are more important than others. For example, you might say that the Name of Student can be skipped as you already know the Student. Also you may not be concerned about the Name of Teacher in the context of this problem. For the other items in the list, you might create a group called “Assignment Schedule” and include within it: Subject, Assignment, Date and Due Date. We might keep the Completion Flag outside of this group. Now whenever this Assignment Schedule is passed to a robot, the robot appends it to its existing list (of assignments) and helps us with daily reminders about assignment due dates and subjects. It automatically adds and tracks a Completion Flag to each Assignment Schedule.

In our example above we chose to ignore the Name of Student and Name of Teacher, while we chose to keep the Name of Subject, Name of Assignment, Date of Assignment, Assignment Due Date and Assignment Completion Flag. Note that the things we chose to keep had a pattern — i.e. every Assignment shared by a teacher would contain a Subject, Assignment, Date and Due Date. We could have multiple assignments in different Subjects, each having different due dates.

The final step in creating our Assignment Schedule robot would be to outline the series of steps to carry out the functions we need. For example, some of these steps could be:

  • When a new assignment is assigned by the teacher, Add the Subject, Assignment, Date, Due Date and Completion Flag to the Assignment Schedule; set the Completion Flag to False (i.e. Not Completed).
  • Send a reminder to the student and parent 2 days prior to the Due Date
  • When an Assignment is completed, mark the Completion Flag as True

We now have our Assignment Schedule robot that simply needs to be coded or programmed — i.e. you write code in one of the many programming languages to set up your robot. Herein lies the fundamental difference between coding and computational thinking. The series of steps we outlined above comprise what we call computational thinking. After this step comes the step we are all familiar with — coding.

This was a very simple example to help you understand what Computational Thinking is.

To put it formally, Computational Thinking comprises these four steps:

  • Decomposition
  • Abstraction
  • Pattern Recognition
  • Algorithm

In our example above, when we broke down our problem into smaller chunks, we were doing Decomposition. Thereafter we started Abstracting out the unimportant parts and identifying Patterns in the data — i.e. what are the items that repeat in each Assignment Schedule. Once we found these patterns we started writing the rules, or an Algorithm, for our program.

You might be wondering: Is Computational Thinking important? This quote from Benjamin Franklin sums it up: “If you fail to prepare, you prepare to fail”. The computational thinking skill set serves as a preparational guide when you undertake your coding journey. Without good preparation and a good plan, your coding journey would be left wanting.

--

--