The full version of this content can be found in the Practices chapter of the complete K–12 Computer Science Framework.
Computational thinking refers to the thought processes involved in expressing solutions as computational steps or algorithms that can be carried out by a computer. (Cuny, Snyder, & Wing, 2010; Aho, 2011; Lee, 2016).
This definition draws on the idea of formulating problems and solutions in a form that can be carried out by an information-processing agent (Cuny, Snyder, & Wing, 2010) and the idea that the solutions should take the specific form of computational steps and algorithms to be executed by a computer (Aho, 2011; Lee, 2016).
Computational thinking requires understanding the capabilities of computers, formulating problems to be addressed by a computer, and designing algorithms that a computer can execute. The most effective context and approach for developing computational thinking is learning computer science; they are intrinsically connected. Computational thinking is at the heart of the computer science practices and is delineated by the practices below.
Practice 3. Recognizing and Defining Computational Problems
Practice 4. Developing and Using Abstractions
Practice 5. Creating Computational Artifacts
Practice 6. Testing and Refining Computational Artifacts
Distinguishing Computational Thinking
The description of computational thinking in the K–12 Computer Science Framework extends beyond the general use of computers or technology in education to include specific skills such as designing algorithms, decomposing problems, and modeling phenomena. If computational thinking can take place without a computer, conversely, using a computer in class does not necessarily constitute computational thinking. For example, a student is not necessarily using computational thinking when he or she enters data into a spreadsheet and creates a chart. However, this action can include computational thinking if the student creates algorithms to automate the transformation of the data or to power an interactive data visualization.
A computational artifact must be distinguished by evaluating the process used to create it (i.e., computational thinking), in addition to the characteristics of the product itself. For example, the same digital animation may be the result of carefully constructing algorithms that control when characters move and how they interact or simply selecting characters and actions from a predesignated template. In this example, it is the process used to create the animation that defines whether it can be considered a computational artifact. The assessment of computational thinking can be improved by having students explain their decisions and development process (Brennan & Resnick, 2012).
Computer Science Practices and Other Subject Areas
Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability (Wing, 2006, p. 33).
The framework is grounded in the belief that computer science offers unique opportunities for developing computational thinking and that the framework’s practices can be applied to other subjects beyond computer science. For example, computational thinking is explicitly referenced in the practices of many state science standards and implicitly in state math standards. Additionally, the recent revision to the International Society for Technology in Education Standards for Students (ISTE, 2016) describes computational thinking in a similar way as the framework. These documents share the idea that computational thinking is important for all students.
The Venn diagram below describes the intersection among practices in computer science, science and engineering, and math. Explicit instruction is required to create the connections illustrated in the diagram.
Supporting Computational Thinking
Rich computational environments, such as block- and text-based programming environments, support students’ development of computational thinking by allowing students to inspect, manipulate, and customize underlying abstractions and mechanisms. A three-stage progression can be used to engage youth within these rich computational environments. This progression, called Use–Modify–Create, developed by the ITEST Working Group on Computational Thinking (Lee et al., 2011), has been shown to support and deepen students’ computational thinking experience. In this progression, students first interact with an existing computational artifact (the “Use” stage).
Students develop computational thinking skills (such as writing algorithms as computer instructions) by modifying and iteratively refining someone else’s project to become their own (the “Modify” stage). As students gain skills and confidence, they can be encouraged to develop ideas for new computational projects of their own design that address issues of their choosing (the “Create” stage).
Use-Modify-Create trajectory. Adapted from “Computational Thinking for Youth in Practice” by I. Lee, F. Martin, J. Denner, B. Coulter, W. Allan, J. Erickson, J. Malyn-Smith, & L. Werner, 2011, ACM Inroads 2 (1): p. 35. Copyright 2011 by the ACM. Adapted with permission of authors.
The writing team thanks the Computational Thinking Task Force of the Computer Science Teachers Association for its contribution to this section.