Computational Thinkning:
AN INTRODUCTORY GUIDE
Within education, computational thinking, CT, is largely framed for precollege students (Lockwood and Mooney 2017). Like in the USA, in the UK there is a drive to embed CT in the curriculum for those in primary and secondary education (Royal Society, 2012). There are several schools of thought with regards to what CT is. This article draws on a recent disciplinary study of CT (Denning and Tedre 2021) to distil thoughts on the origins and current state of some of the most prominent schools of thought on CT, starting with the basic concepts and discussing some computer science disciplinary professional views.
Definitions
Wing's computational thinking article (Wing 2006) has framed the contemporary expansionist view of CT for the purpose of wider adoption in education. There are some generally agreed skills and concepts for what constitutes CT, referred to as basic CT: decomposition, abstraction, debugging and iteration (or evaluation), generalization and algorithms and their design (Shute et al. 2017). These skills are described below:
- Decomposition
- Breaking down problems, data, algorithms, processes and systems into their constituent parts.
- Abstraction
- Removing unnecessary complexity from a problem by selecting the right representation.
- Algorithmic thinking
- Clear definition of steps needed to carry out a process.
- Evaluation
- Assessing the suitability of an algorithm largely in terms of use of resources.
- Generalization
- Identifying patterns across similar problems to extend application of solutions.
In the past, CT has commonly been associated with algorithmizing, procedural and ICT literacy (Tedre and Denning 2016). More recently, some authors on CT have critiqued and questioned the uniqueness of claims related to basic CT and the lack of clarity in the differences between CT and computer science (Barr and Stephenson 2011). Other authors have pointed out the ahistorical nature of CT descriptions (Tedre and Denning 2016). Denning and Tedre describe CT as follows:
Computational thinking is the mental skills and practices for designing computations that get computers to do jobs for us, and for explaining and interpreting the world in terms of information processes.
- Tedre and Denning (2017)
Algorithmic orgins and view of CT
The algorithmic view was advanced by Knuth in several works on CT (Knuth 1972; Knuth 1981). Traditionally, algorithmic computing has involved data representation, specific computational steps (Grier, 2005), logical planning for function is computation using Boole's algebraic logic (Boole 1854), working with limited precision of finite-string representations and minimizing cumulative round off errors (Grier, 2005) and characterizing the limits of computation (Turing, 1936). Denning and Tedre (2021) note that these concepts preceded the information age. Fortnow and Homer (2003) demonstrated how Gödel's "NP-complete" problem also contributed to the CT algorithmic view. Knuth separated the algorithmic view of CT from its mathematical associations by emphasizing techniques of decomposition, information structures, attention to data altering procedures, use of symbolic representations of reality and continuous invention of new notations to solve problems (Knuth, 1981). The nature of this algorithmic view of CT that gained prominence from Knuth was first questioned by those who were sharing information and machine resources in operating systems and networks in the 1960s. They developed concurrent processes, global digital objects, abstraction levels, virtual machines etc (Denning 2016).
Automation, machine and information agency
Another view seeks to bring to the fore the function of CT as relates to the scale of problems. The view challenges the notion that algorithms are executed by information agents and humans are information agents. The challenge is on the applicability of this notion with regards to large scale tasks. Authors Denning and Tedre (2021) use the example of drawing the net frame of a video on a computer screen to demonstrate the scale problem in this notion. In the authors' example, they assert that it would take a person every second of every day for a to perform this task whereas a graphics system perform this task in 10 milliseconds. In trying to provide an example of an impossible task for human agency, the authors provide one that is not impossible, but rather orders of magnitude longer for humans. Reframed differently, it would take a person spending 6 hours a day, every day, for 4 years to complete this task. While the algorithmic view emphasizes computations as being abstract, the automation view emphasizes physical, efficient, machine-realizable processes which are inseparable from the machine (Denning and Tedre 2021).
Software engineering
Software engineering rose out of the need to complement existing programming methodologies which were inadequate for dealing with large scale software systems (Friedman and Comford, 1989). On account of the similarity of practices with other engineering disciplines, this engineering approach gained wide acceptance within engineering communities. Software engineering was distinguished "as programming as in the large". The large systems approach led to advanced CT concepts. Software modularity gained prominence, but not without challenges. Because modules were designed as black boxes, designers relied on their interpretations of provided specifications for how they were to work, leading to subjective and slightly different interpretations on large projects (Brooks, 1975). Through the 1990s, design experts exchanged design hints, principles and patterns (Denning and Tedre 2021). Some of these concepts were borrowed from other disciplines and were all largely an application of system wide evaluation and generalization. Their focus was on designing systems smartly and efficiently without having to share models. Advanced CT in its practice, is more specialized and comes from experience on large computer and information systems.
The scientific view
Denning and Tedre (2021) highlight 4 emblematic distinctions of computational thinking in science:
- A powerful simulation and evaluation instrument of science.
- An enabler of new scientific investigative methods.
- A new lens for interpreting results from virtual experiments of natural processes, with the limit of Gödel and Cook's "NP" problems (Cook, 1971).
- New speculations on the structure of the world, with the universe being an information process.
Applications to own learning journey
One of the benefits of basic CT is its adaptable use across different spheres of life. For example, as a problem-solving tool, it can be it can be applied as follows:
Concept | Application |
---|---|
Decomposition | Breaking down assignments and challenges into constitutive components for both individual and group tasks. |
Abstraction | identifying the essential parts of computing exercises and problems and their purpose. |
Algorithmic thinking | Planning the steps to take to solve each defined problem on the course, some more detailed than others. |
Evaluation | Using of provided marking criteria to produces better quality if work. |
Generalization | Learning patterns from practice in programming and recognizing similarities in tools in techniques used across different computable problems. |
By applying algorithmic rigor in solving problems, the steps to take in solving problems both on and off the course will be both clear and executable. For example, an organization the author of the article volunteers for stores membership data on local machines, but this makes the data inaccessible outside of the office. By considering the steps needed to transfer the data online while maintaining adequate security, the organization will be able to solve the accessibility problem
Another area to apply computational thinking in is attempting to automate a simple routine scheduling task. Each day before a lecture, setting a reminder to cover learning material related to the upcoming lecture based on calendar event will aid the author's learning activities. By using concepts from software engineering and programming, the hope is to achieve this using industry-based best practices.
An application of generalization the author hopes to utilize is in programming for energy modeling. It in the area that led the author to computing in an attempt to transfer the skills from the course to disciplinary energy modeling approaches.
On the course, prioritizing parts of assignments that have most marks for example because they relate to most of the learning outcomes is a different representation of how to get the most out of a module. From another perspective, the representation of complex problems encountered as simply as sum of their parts is also an abstraction exercise. In many cases, attempting to find the essence of a problem and using a simpler alternative model of the problem is a way to practice abstraction on the course.
The evaluation process is iterative. It seeks to find the right/acceptable balance between available resources and the solution. In assessed project based learning, the provision of criteria makes this process easier to carry out. The key is to keep checking the work being produced against the provided criteria.
This article has provided an overview of computational thinking using multiple views of CT both within and without the computer science discipline. It has also demonstrated opportunities for application for the computing student on the MSc Computing conversion course.