What is Computational Thinking?

Computational thinking is a high level thought process that considers the world in computational terms. It begins with learning to see opportunities to compute something, and it develops to include such considerations as computational efficiency, selecting appropriate ways to represent data, and making approximations. A person skilled in computational thinking is able to harness the power of computing to gain insights. Computational thinking is not programming. It is a thought process that can be brought to bear not only in programming but also in a wide array of other contexts. It relates to mathematical thinking in its use of abstraction, decomposition, measurement and modeling, but is more directly cognizant of the need to compute and the potential benefits of doing so.

The International Society for Technology in Education (ISTE) and the Computer Science Teachers Association (CSTA) put forth an operational definition of computational thinking that captures much of our thinking in VCTAL. The ISTE/CSTA definition for Computational Thinking is quoted below[1].

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. These dispositions or attitudes include:

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

[1] "Operational Definition of Computational Thinking for K-12 Education", International Society for Technology in Education (ISTE) and the Computer Science Teachers Association (CSTA), 2011