“Computational thinking is the thought process involved in formulating a problem and expressing its solution(s) in such a way that a computer—human or machine—can effectively carry out.”
Wing, Jeannette (2014). “Computational Thinking Benefits Society.” 40th Anniversary Blog of Social Issues in Computing.
Jeannette Wing, a computational thinking researcher, describes computational thinking as a specific thought process for formulating a problem so that it can be effectively solved by someone or something that computes (human or machine). This makes computational thinking an especially effective approach for developing computer science and programming approaches via physical computers and for those that program and utilize those computers. But what about for other content areas beyond computer science? A good place to start with this in mind is a slightly closer look at computational thinking. There are four primary components of computational thinking that are commonly recognized as its pillars and they are as follows:
- Decomposition: Breaking down data, processes, or problems into smaller, manageable parts.
- Pattern Recognition: Observing patterns, trends, and regularities in data.
- Abstraction: Identifying the general principles that generate these patterns.
- Algorithm Design: Developing the step-by-step instructions for solving this and similar problems.
These four pillars are also explained well in a video for educators created by Google. With these four pillars in mind, we can look at how the ISTE Indicators of Computational Thinking quantify computational thinking into a single applicable statement: “Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving,” ISTE Indicators of Computational Thinking. Essentially, computational thinking is a process for quantifying, breaking down, and solving problems into small solvable pieces. Problem solving can be done in any content area. By looking more closely at the ISTE Computational Thinking standard, we can get an idea for how computational thinking might be applied more generically across content areas as a way to approach problem solving in different subjects.
International Society for Technology in Education (ISTE) Standard 5
ISTE Standard 5, Computational Thinker, students develop and employ strategies for understanding and solving problems in ways that leverage the power of technological methods to develop and test solutions. Students:
- Formulate problem definitions suited for technology-assisted methods such as data analysis, abstract models and algorithmic thinking in exploring and finding solutions.
- Collect data or identify relevant data sets, use digital tools to analyze them, and represent data in various ways to facilitate problem-solving and decision-making.
- Break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving.
- Understand how automation works and use algorithmic thinking to develop a sequence of steps to create and test automated solutions.
The ISTE Computational Thinker standard emphasizes the leveraging of technology in problem solving via computational thinking. The focus is on formulating problems, collecting data, breaking down problems into quantifiable parts, and understanding automation via algorithmic thinking. The ISTE standards aren’t the only standards that address computational thinking, though. We can also look to the Next Generation Science Standards (NGSS) Science and Engineering Practices and Common Core State Standards (CCSS) Mathematical Practices for direct and indirect references to computational thinking. The NGSS directly references computational thinking via the fifth Science and Engineering Practice, “Using mathematics and computational thinking,” and references aspects of computational thinking through other practices such as “Analyzing and interpreting data.” The CCSS Mathematical Practices do not explicitly state computational thinking but the components are definitely present in practices such as “Look for and express regularity in repeated reasoning” and “Reason abstractly and quantitatively.” With all of these references across a variety of standards, it makes sense to start thinking about applying computational thinking in as many relevant places as possible across the curriculum.
How do teachers effectively integrate computational thinking across academic disciplines in such a way that it becomes an effective tool for areas of instruction beyond computer science and math, such as engineering, science, reading, writing, history, and art?
Starting with Familiar Computational Thinking Problems
As we think about applying computational thinking beyond computer science and math, it’s probably best to reflect on how computational thinking is more traditionally applied in computer science and mathematics. This will provide a starting point when thinking about applying computational thinking elsewhere.
- Decomposition in Computer Science: in programming this means looking at how to approach a problem in small and simple enough ways that it can be written as parts of a computer program that utilizes primarily binary logic.
- Pattern Recognition in Computer Science: by looking for patterns across any problem or problems then programmers can start to identify similarities and differences necessary for solving various aspects of a problem or problems.
- Abstraction in Computer Science: once patterns are identified then computer programmers can begin to piece the various small pieces of a problem together into something that might become a larger solution as it’s applicable across problems of a certain problem type whether known or as yet unknown.
- Algorithmic Design in Computer Science: the creation of a set of steps to solve a certain problem type can be described as an algorithm because it applies to both known and unknown problems.
These various steps when applied via computer science should start to sound familiar for mathematics. We basically teach students to memorize a variety of algorithms starting with those that are most simple and building up toward the more complex. Along the way, we also try to teach deeper mathematical thinking, concepts, and terminology but the algorithms tend to be at the center of instruction. Teaching computational thinking in mathematics means taking instruction to a deeper level, though, because we need to show students how to identify, break down, quantify, and design algorithmic thinking itself. This deeper approach to mathematics via computational thinking would go a long way toward helping students understand the “why” behind what they are doing.
Applying Computational Thinking Problems to Other Areas
Now comes the more challenging task of applying computational thinking to those content areas that we don’t normally think of as applicable. By focusing on the four pillars of computational thinking, we can start to think about what this might look like. At its core is probably pattern identification. So we need to start thinking about everything in terms of patterns. Computer science is patterns of binary logic and mathematics is patterns of numbers. Beyond these two, art is patterns of lines, reading is patterns of letters, writing is patterns of words, science is patterns of ideas, engineering is patterns of science applied to or with technology, history is patterns of events, music is patterns of notes, etc. This list is probably an oversimplification but you get the idea that we can look at everything as being composed of patterns, and if we can do this then we can use a problem solving approach like computational thinking that relies on patterns to solve problems across all of these content areas.
- Decomposition in Art: breaking down the components of a particular type of picture (e.g. landscape or portrait) into different smaller parts.
- Pattern Recognition in Art: identifying patterns that a particular type of picture or pictures has.
- Abstraction in Art: by synthesizing from the patterns of similarities and differences across a particular type of picture(s) then a more general idea or set of ideas can be described.
- Algorithmic Design: a set of repeatable steps for recognizing and possibly creating more pictures of a certain type allows for this type of art problem of recognition or creation to be repeatable and reproducible.
- Decomposition in History: breaking down the components that lead up to collapse of a civilization in history can lead the student to understand the smaller details that may lead up to such a large scale event.
- Pattern Recognition in History: recognizing that a certain pattern of events probably leads up to a collapse of a civilization and means the more similarities and differences that can be quantified then the more likely patterns can be identified.
- Abstraction in History: by building a bigger picture of the patterns that occur leading up to the collapse of a civilization then a synthesized coherent and detailed description of this overall type of event can begin to emerge.
- Algorithmic Design in History: a step-by-step description of the characteristics of events leading up to the collapse of a civilization and how these can generally be codified as repeatedly observable steps in a process means that students could be tasked with designing an algorithm for analyzing the typical civilization collapse and search throughout history for similar scenarios.
These are two fairly generic examples of applying computational thinking to content areas beyond computer science and mathematics. Art and history are not traditionally associated with computational thinking and yet there is tremendous potential for applying this problem solving approach to problems that might exist in either subject area. With practice, components of computational thinking can be identified in all subject areas and then applied to relevant problems by students with proper support through thoughtfully designed lessons.
How Then Does The Average Classroom Teacher Apply This?
Start simple and start small. This fun video from the website “Hello Ruby” explains computational thinking in the context of everyday life. The “Hello Ruby” website also has a selection of fun and unique lesson approaches that include topics such as computational thinking. This Edutopia website article shared by one of my Digital Educational Leadership colleagues at Seattle Pacific University provides a variety of specific content area lesson examples where computational thinking can be applied in a classroom setting. Looking at examples helps identify approaches to directly copy or inspire various ways that variations can be created and adapted for a different curriculum. There are a variety of online resources out there and more popping up every day with support from organizations such as the Computational Thinking Alliance. Again, overall, the key is to start simple and start small while growing your classroom approaches from there over time.
- Liukas, L. (2020, February 29th). Hello Ruby. Hello Ruby Website. Retrieved from http://www.helloruby.com/
- Google School. (2016, October 26th). What is Computational Thinking. YouTube. Retreived from https://www.youtube.com/watch?v=GJKzkVZcozc&feature=youtu.be
- Sheldon, E. (2017, March 30th). Computational Thinking Across the Curriculum. Edutopia. Retrieved from https://www.edutopia.org/blog/computational-thinking-across-the-curriculum-eli-sheldon
- International Society for Technology in Education. (2016). ISTE Standards For Students. ISTE. Retrieved from https://www.iste.org/standards/for-students
- The Next Generation Science Standards for States by States. (2013). Home Page. Next Generation Science Standards. Retrieved from https://www.nextgenscience.org/
- Common Core State Standards Initiative. (2020). Home Page. Common Core State Standards. Retrieved from http://www.corestandards.org/
- Computational Thinking Alliance (2020, February 29th). Home Page. Computational Thinking Alliance. Retrieved from https://www.computationalthinking.net