Computational thinking

Nerve Cell 'Teaching students and young professionals to think is more important than teaching them professionalism' said one of the delegates at a recent BCS Thought Leadership debate, which aimed to discuss what computational thinking is and how it impacts upon our everyday lives. Justin Richards reports.

Those attending the debate were asked to consider how they defined computational thinking, where it came from, how it impacts on everyone's lives and whether or not it should be encouraged.

It's all about education

The advent of CITP and the preoccupation with professionalism were not how some attendees saw the computational landscape to be. In fact a number considered that it was noted that within engineering, computer science is at an advantage in NOT needing to preoccupy itself with fact-lists and that students had enormous scope to think and to apply their imaginations.

There is a need to meet students on their terms as much as on ours; in particular, games are a good vehicle for teaching and students can relate to that area of IT. One attendee encourages the asking of questions in his lectures by announcing his intention to make a deliberate mistake at some time, one of some depth.

It's only when faced by opposition that we can understand how we think ourselves. With this in mind there is a need to promote more alternative ways of thinking and for students to be able to understand the choices that exist. However, to bring out computational thinking in young people is difficult.

One of the speakers stated that 'knowledge gives us courage to act on bigger things. Complexity and computability go hand in hand, and enable us to know how hard something is and whether it is solvable or not.' They also felt that there is a need to evangelise computational thinking.

If computational thinking is about abstraction, then some participants wondered if it would be possible to teach it. For some, perhaps the majority, abstraction actually hinders understanding. In fact, abstraction may not be universally useful; it seems, for example, to have largely been a failure in language processing.

The term 'computational literacy' was discussed and it was felt that this was what the broad population required, and perhaps not 'computational thinking' at all.

Such literacy is not intended as 'using Microsoft' - we take literacy in its normal sense for granted, but may not expect everyone to be able to author texts or poems. For example, any sensible use of search engines requires an understanding of a Boolean combination of conditions, and this is very rare among the public.

What is computational thinking?

Computational thinking could be considered to be a manifesto for computer science and is what every computer scientist has within them, without their equipment. It might be seen as being a common language for solving problems.

Computational thinking helps iron out the problems from abstraction - determining what it is that can be computed. Some felt that it was a form of intellectual property - a way of thinking which aids the 'user' in solving problems and tapping into their constructive imagination.

Computational thinking has an obligation to find a solution and is sometimes used to crystallise natural phenomena by naming things that haven't already had names in the past.

It was thought that it helps us to deal with systems, which generate too much data, complete with false positives and negatives and helps us to better understand the constraints to a problem.

Reference was made early on to Jeannette Wing's seminal article on computational thinking which states that 'computational thinking represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use'.

Jeannette goes on to say that 'computational thinking builds on the power and limits of computing processes, whether they are executed by a human or by a machine.'

Participants were confused as to exactly what was meant by computational thinking, and to the extent that we could understand it. Some were doubtful as to whether or not it is specific to computer science.

In particular, many wondered how it differed from the study of algorithms and data structures, which have been fundamental aspects of computer science for many years. Some felt that abstraction and shifting representations (data structures) is not unique to computer science - mathematicians do it all the time.

In fact processes have existed since long before computational thinking existed. Representations of such processes don't really require computational thinking, which only exists because we do. Is computational thinking just a way of describing the dynamics and the processing, which has existed for many years?

Some participants wondered if computational thinking was related to the tension between empirical and theoretical investigations in general, i.e. between efforts to study the properties of the world as we find it versus efforts to construct models that can predict the outcome of empirical studies in situations that we have not yet encountered.

There is some tension between these two aspects of research in most, if not all, scientific disciplines, and it isn't clear if one should be considered more valuable, or more 'scientific', than the other.

Another possible definition of computational thinking, which may be unique to computer science, is that it involves thinking about computational limits and complexity - what is possible to compute, and what is not?

What do we do with it?

Computational thinking is still discrete to a large extent, whereas, for example, mathematical thinking is more obvious and is better understood.

Computational thinking takes a wide picture view, including data, and applies syntax manipulation in order to produce a quantifiable result. Physics on the other hand is about the 'continuous' without any separation between the 'what' and the 'how'.

One anecdote that was told addressed the possible undesirability of the optimal use of computers to solve information problems. For example, a lawyer noted that if people 'don't do the work' (without automation of search), then they 'don't learn the content'.

One member noted decay in the quality of STM, and that computational thinking actually needed such quality. Another noted a declining 'sense of wonder' among digital natives in what computational thinking might achieve.

Computer science has had a huge impact on all other sciences and how they can integrate with each other. However this also works in reverse as the other sciences direct the way in which computational thinking is going.

A few attendees wondered if computational thinking was somehow about modelling, and if so whether the focus was on numerical modelling or symbolic modelling. Others wondered about analogies within other sciences, such as chemistry, where modelling chemical structures is an important research area.

Another participant noted that similar means of thinking existing in Law, via modelling legal systems, and noted that while the Napoleonic Code seems to be most easily modelled using deductive reasoning systems, and Common Law is most easily modelled using case based reasoning, it is easy to show that these choices can be reversed with equal success.

In summary

Some wondered if computer science is really a distinct 'science' in its own right, or simply a mixture of mathematics and engineering. Perhaps everyone else, in all other scientific fields, is actually doing computational thinking without really understanding that they are doing it, and are just getting on with it.

Many felt that IT is taken for granted by the general public, which means that computational thinking is not appreciated as much as it should be. For example, a five year old can use Google Earth today and for the rest of their life, and never know what it was like to be without such an incredible tool.

IT is now more of social phenomena than what some term as 'easy maths'. It's time for the IT community to convince other subjects that computer science is a subject in its own right, and not just a facilitator for others. Currently computer science suffers from poor relationship syndrome with the so-called 'proper' sciences.

However, computer science and computational thinking have changed science forever, with computer modelling being a widely used tool within all disciplines, and consequently IT should be able to command the respect it so richly deserves. Computer scientists are the new engineers who help facilitate the work of all other disciplines.

Further reading:

Jeannette M. Wing 'Computational Thinking'. 'Communications of the ACM', March 2006/Vol.49, No.3 P33.

Niklaus Wirth. 'Algorithms Plus Data Structures Equals Programs', 1978.

Tony Becher and Paul Trowler 'Academic Tribes and Territories: Intellectual Enquiry and the Cultures of Discipline' SRHE and Open University, 2001.

Zygmunt Baumann. 'Liquid Modernity'. Cambridge: Polity Press, 2000.   

May 2007