We use the term ‘Computational Thinking’ in one of our visit day slides – the day prospective students come the School to find out more and get their offer – but we don’t really go into it in any more detail on the Website or explicitly in the Undergraduate Programme; as far as I’m aware. It was hot a year or so ago but in reality I never saw the point, it seemed obvious or as though Computer Scientists wanted to cling to this all encompassing concept – think the Web Science ‘Flower’ – to justify our interdisciplinary existence. However, it is probably not a good idea to dismiss something out of hand – especially when its main proponents are at Carnegie Mellon [1].
They tell us that “Computational thinking is a way of solving problems, designing systems, and understanding human behaviour that draws on concepts fundamental to computer science. To flourish in today’s world, computational thinking has to be a fundamental part of the way people think and understand the world.”
The key part here is “concepts fundamental to computer science” so what are these concepts? Well culled from some the the literature and reformatted they seem to mostly be:
- Abstraction: “making use of different levels of abstraction, to understand and solve problems more effectively”;
- Algorithmic Thinking;
- Application of Mathematical concepts;
- Inductive Reasoning; and
- Scalability: “for reasons of efficiency but also for economic and social reasons”.
CMU give examples along the line of “Computational thinking makes it possible for transplant surgeons to realize that more lives can be saved by optimizing the exchange of organs among pools of donors and recipients. It enables new drug designs to be analysed so that they are less likely to create drug-resistant strains of diseases. Artists, when given the tools to think and express themselves computationally, can create totally new modes of human experience. Users of the Internet, when empowered with computational thinking, can demystify privacy technologies and surf the web safely.” The main building blocks of their studies seem to be around what they call PROBES1 or PROBlem-oriented Exploration’s. But to me these all sound real similar to SE Use Cases in Requirements Analysis and Elicitation – and scenarios in HCI Engineering work.
Where really does the novelty lay, how useful are these PROBES, and why have we not seen large scale uptake of the tools and techniques around Computational Thinking – I’m tempted to say “because there is nothing new here” but I’ve a niggling feeling I’m wrong…
Maybe it is because they are just so second nature to any good computer scientist / engineer – we think about these things all the time, and apply them even more, to move knotty real world problems to a domain that makes them more amenable to the application of logic, structure, and computational processes. Maybe, this stuff is second nature (and in some cases quite pedestrian) to CS people but really ‘WOW’ to people from other domains. Logically thinking about (and solving) complex problems from multiple heterogeneous domains and coming up with something half sensible may very well be a key trait of the CS domain. I’m still not sure – it would be good to see a real book on this subject just so we can identify it is really ground breaking – or really vapourwear.
References:
Notes:
- A PROBE develops and applies novel computing concepts in ways that vividly illustrate the value of computational thinking while advancing basic research in computer science. Some PROBEs involve applying new research concepts to nontraditional problems, to show how computational thinking can improve our world. Other PROBEs explore new educational concepts, to teach computational thinking. Often a PROBE involves a collaboration between a computer science researcher and a domain expert.