It’s an Ordered Way of Thinking That Enables Users to Solve Complex Problems
There is no single agreed-upon definition of “Computational Thinking,” but in essence it involves the use of specific strategies and tools to solve complex problems. The BBC Bitesize offers this concise and simple definition:
“Computers can be used to help us solve problems. However, before a problem can be tackled, the problem itself and the ways in which it could be solved need to be understood. Computational thinking allows us to do this…(it) allows us to take a complex problem, understand what the problem is and develop possible solutions. We can then present these solutions in a way that a computer, a human, or both, can understand.
There are four key techniques (cornerstones) to computational thinking:
- Decomposition– breaking down a complex problem or system into smaller, more manageable parts
- Pattern recognition– looking for similarities among and within problems
- Abstraction– focusing on the important information only, ignoring irrelevant detail
- Algorithms– developing a step-by-step solution to the problem, or the rules to follow to solve the problem”
Two other definitions:
- Al Aho of the Columbia University Computer Science Department describes computational thinking as “the thought processes involved in formulating problems so their solutions can be represented as computational steps and algorithms.”
- Jeannette Wing, also of Columbia University, brought the idea of computational thinking to prominence in a paper she wrote in 2006. She says, “Informally, computational thinking describes the mental activity in formulating a problem to admit a computational solution. The solution can be carried out by a human or machine, or more generally, by combinations of humans and machines.”
An Operational Definition
The International Society for Technology in Education (ISTE) and the Computer Science Teachers Association developed an “operational definition” of computational thinking that describes it as a problem-solving process that includes a number of common characteristics and dispositions. The ISTE/CSTA definition says:
“Computational thinking (CT) is a problem-solving process that includes (but is not limited to) the following characteristics:
- Formulating problems in a way that enables us to use a computer and other tools to help solve them
- Logically organizing and analyzing data
- Representing data through abstractions such as models and simulations
- Automating solutions through algorithmic thinking (a series of ordered steps)
- Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
- Generalizing and transferring this problem-solving process to a wide variety of problems
These skills are supported and enhanced by a number of dispositions or attitudes that are essential dimensions of CT; they include the following:
- Confidence in dealing with complexity
- Persistence in working with difficult problems
- Tolerance for ambiguity
- The ability to deal with open-ended problems
- The ability to communicate and work with others to achieve a common goal or solution”
What Kinds of Thinking Are Computational?
The “characteristics” listed in the ISTE/CSTA definition provide good examples of computational thinking. In essence, computational thinking is a set of tools or strategies for solving complex problems that relates to mathematical thinking in its use of abstraction, decomposition, measurement and modeling. However, it is more directly cognizant than math per se in its ability to compute and the potential benefits of doing so.
When we talk about computational thinking, there are certain words that appear across many different definitions. These include:
Use of Data – All sorts of data practices involve computational thinking. Collecting data, analyzing data, and representing data in different ways all help you think about a problem.
Abstraction – Reducing the complexity of a problem by focusing on its most important features is called abstraction. It often involves generalizing from specific instances to something that can be applied more broadly. The use of variables to represent unknown quantities in algebra is an important example of abstraction.
Model – A model is an abstract representation of a real system. Models often use mathematical and computational ideas to express relationships between entities of interest. A model is an example of abstraction.
Unlock the Secret of Your Neighbor’s Secret Cake Recipe
Algorithm – An algorithm is a sequence of steps that must be followed in a specific order to solve a problem. When you follow the instructions in a recipe to bake a cake, you are, in essence, executing an algorithm. By expressing the solution to a problem in the form of an algorithm, you make the process reproducible.
Automation – Automation often involves using a program or computer application to perform repetitive tasks or calculations. By making processes reproducible, algorithms are a key enabler of automation.
Decomposition – Solving a complex problem by breaking it up into smaller, more manageable tasks is called decomposition.
Simulation – Simulations use of models as surrogates for real systems. People often use simulation as a way to explore systems that have uncertainty.
People from many disciplines use these strategies. You may already use related activities in your class.
One goal of this course is to help you recognize that, when you ask your students to engage in this type of thinking, you are asking them to think computationally. Once you begin to recognize the computational thinking already present in the courses you teach, you can label it and illuminate it for your students.
The above list of CT terms is not exhaustive, but it gives you a sense of some of the building blocks of computational thinking. The units of our project’s CT course will highlight other CT terms. Others terms appear in the online resources listed below: