Tuesday, January 22, 2019

computational thinking


The 2017 NMC/CoSN Horizon Report (K–12 Edition) identified teaching computational thinking as a persistent and difficult problem.

Although correctly highlighting its importance and the challenge that educators face in teaching it, the report, like some of its sources, perpetuates some common fallacies about the nature of computational thinking and its relationship with modern computer technology.

The report strikingly asserts that "The roots of computational thinking can be traced to algorithmic thinking of the 1950s and 1960s..." making the fundamental mistake in assuming that understanding computational thinking is a response to the sudden arrival of digital computers.

The truth is the reverse: the advent of digital computers in the 1940s and their wide adoption in the decades that followed was the result of humanity's centuries-long study of computational thinking, and in some senses, modern computers represent the crystallisation of a very elaborate understanding of what computational thinking is.

In other words - mathematicians, linguists, philosophers, engineers and scientists had been working on gaining better understandings of computational thinking for a very long time. The results of this research included several mathematical models of computation (Turing machines, and the Lambda calculus are examples), understandings of the logic and workings of formal systems (Boolean algebra, for example), the limitations of computation (Godel's famous theorems), an understanding of formal languages (Chomsky hierarchy), and also key results in how to express problems and ideas computationally. One of the fruits of this long research programme, that dates back at least to Leibniz, is the digital computer.

Image result for difference engine

When Ada Lovelace wrote programs for Babbage's Analytic and Difference Engines, she was
applying, and developing, our growing understanding of computational thinking.


A helpful reminder that computational thinking predates our notion of computers, is to remember that computers used to be humans. The book and film Hidden Figures provides a nice window into that time, not so long ago, where people were employed to do the sort of problem solving and calculations that today are solved using software and hardware.

People solve problems and do calculations - but how do we do it? This is the basic question that fuelled the interest in studying computation itself, beginning hundreds of years ago. To the surprise of some, it was found that there was no magic spark within the human brain that allowed us to add numbers together: a formal system (a system with no deeper meaning, only symbolic manipulation) could express all of the operations of arithmetic. In fact, machines could be developed to carry out calculations.

Understanding computational thinking is not something that needs to happen in response to computer technology - computer technology is the result of our already deep understanding of computational thinking.

Why do so many people treat computational thinking as a new problem, one that is forced upon us by the advent of new technology?

We all like new problems.
New problems give us a chance to come up with new and exciting solutions. We don't like to be reminded by historians and other scholars that there is really nothing new under the sun. Coming up with a new solution to a new problem makes us a creative genius; recognising something as an existing problem conveys far less excitement and prestige.

We like to think of technology as something new.
Although the consumer aspects of computer technology are new, the underling ideas that modern consumer technology is based, particularly at the computational level, are not new. We think of computers as having emerged, as if out of nothing, sometime in the 1950s - an iceberg analogy might be useful: the applications that we have seen more and more of in the last 70 years are the tip of a large structure that previously went unpercieved, except by a minority. Our job is not to invent a new way of understanding the tip, but rather to look beneath the surface and appreciate what we were not previously aware of.

We don't like the answer to "what is computational thinking?"
We'd like it if there was something new here, but computational thinking is about using mathematics, logic, language, and problem solving (using, for example abstraction, modelling, and methods of representation).


Bringing computational thinking into the mainstream is an ongoing challenge. Computational thinking involves topics that have always been among the most challenging to teach: mathematics, language, logic, problem solving. From these subjects, we can use what we already know about computational thinking to structure their curriculum in a way that emphasises the most relevant parts of computational thinking.

Framing these topics in in the context of computational thinking does represent a shift in emphasis. For example, Calculus has traditionally been treated as the pinnacle of highschool mathematics - it makes sense, given the applicability of Calculus such a wide range of real-world problems, and the importance of the mathematics that an understanding of Calculus allows students to develop. However, a high school mathematics curriculum more interested in computational thinking might nudge Calculus out of its revered place in favour of mathematics that is more focused on discrete functions and other topics more aligned with computational thinking.  As Arthur Benjamin puts it in his TED talk "Teach Statistics Before Calculus":
Look, the world has changed from analog to digital. And it's time for our mathematics curriculum to change from analog to digital, from the more classical, continuous mathematics, to the more modern, discrete mathematics -- the mathematics of uncertainty, of randomness, of data -- that being probability and statistics.



No comments:

Post a Comment