It is often argued that we need clarity about the nature of Computational Thinking and how it relates to the more established mathematics and problems solving worlds. This diagram is an attempt to set out some of the key elements of computational thinking content and their interrelationships, particularly with respect to computer science.
Using my notion of competence, the content analysis in the diagram focusses on those aspects of knowledge: facts, concepts and mental models, but does not describe knowledge strategies, craft skills and dispositions of character that might be needed for a full description of Computational Thinking.
It is my contention that much of the content of Computational Thinking is to be found outside the subject of Computer Science, in other subject disciplines and in the everyday world. Computing offers the chance to make such ideas programmable and thus transform sometimes abstract ideas into more concrete, executable form – making their learning all the more amenable to the loop of expression and evaluation described in my view of Expressive Constructivism as set out in my PhD.
Niklaus Wirth’s famous equation (and book):
Algorithms + Data Structures = Programs
lies in the centre of the diagram to remind us of the importance of data structures in a time when algorithms are the fashion. It is my thought that computational thinking is better defined as: combining problem solving and design to create useful solutions, informed by the possibilities that Computing offers.