Computational thinking is not a new idea. Seymour Papert coined the term over thirty-five years ago in his book Mindstorms. Although he revisited it in later publications, it did not become part of the educational vernacular until 2006, when Jeannette Wing published her oft-quoted Viewpoint article on the topic. Since its publication, Wing’s work has served as the cornerstone of a great deal of research on computational thinking. As such, it would be easy, indeed logical, to assume that there is general agreement in the educational community about the definition of computational thinking. However, such is not the case. According to Grover and Pea (2013), computational thinking suffers from “definitional confusion” (p. 38). They describe how, in the early days after Wing’s article was written, educational academics worked on a wider definition of computational thinking “to take it beyond ‘just programming,’” but that this effort “made the lack of consensus clearer as it raised more questions” (p. 39).
This confusion continues today. Brennan and Resnick (2012) note that “there is little agreement about what computational thinking encompasses” despite the increased attention it has received in recent years (p. 1). Lye and Koh (2014) put the same idea differently, saying that “the definition of computational thinking still remains contested as no dominant discourse reigns” (p. 52). Weintrop et al. (2015) write that “the practices collected under the umbrella term ‘computational thinking’ have not yet been clearly defined” (p. 128). As recently as 2016, Angeli et al. discussed the lack of a single unanimous definition of computational thinking (p. 49). Clearly, the experts in the field have varying opinions on the exact nature of computational thinking, and this lack of clarity makes it difficult for teachers to offer strong and consistent messaging about CT in their classrooms.
This confusion continues today. Brennan and Resnick (2012) note that “there is little agreement about what computational thinking encompasses” despite the increased attention it has received in recent years (p. 1). Lye and Koh (2014) put the same idea differently, saying that “the definition of computational thinking still remains contested as no dominant discourse reigns” (p. 52). Weintrop et al. (2015) write that “the practices collected under the umbrella term ‘computational thinking’ have not yet been clearly defined” (p. 128). As recently as 2016, Angeli et al. discussed the lack of a single unanimous definition of computational thinking (p. 49). Clearly, the experts in the field have varying opinions on the exact nature of computational thinking, and this lack of clarity makes it difficult for teachers to offer strong and consistent messaging about CT in their classrooms.
To remedy this situation, teachers and their students need a universal definition of computational thinking. To this end, it is a good exercise to analyze several popular definitions of the term for points of commonality. Once found, these can be used to generate a statement that will be acceptable to most. The gallery below features six definitions of CT.
Each of the definitions above identifies computational thinking as a process through which problems can be interpreted, understood, and solved. Three reference algorithmic representation of solutions (two mention algorithms explicitly; Cuny, Snyder, and Wing refer to algorithms when they write about forms “that can be effectively carried out by an information-processing agent”). It is safe to say, then, that problem solving and the creation and use of algorithms are central to any definition of computational thinking. Several definitions refer to the use of computer science concepts. Lye and Koh name four of these (“abstraction, debugging, remixing and iteration”) to support their definition. To truly understand computational thinking, teachers and students need to move beyond one-line definitions and look at specific CT skills and concepts.
Nine academic texts were reviewed for skills and concepts inherent in CT. The list below presents the skills deemed most important to computational thinking as determined by the number of texts in which they are named and described.
Several computational concepts were highlighted in addition to the skill clusters described above. These include sequences, parallel thinking, conditional logic, operators, events, iteration, and recursion (Brennan & Resnick, 2012; Grover & Pea, 2013; Weintrop et al., 2015).
- Seven of the nine texts list abstraction as one of the key skills included in computational thinking (Aho, 2012; Angeli et al., 2016; Brennan & Resnick, 2012; Grover & Pea, 2013; Israel et al., 2015; Weintrop et al., 2015; Wing, 2006). Simply defined, abstraction is the ability to isolate relevant information in a problem-solving situation to allow for the creation of a model and/or process that can be used to solve problems of a similar type. Pattern recognition is a skill inherent in abstraction. Grover and Pea (2013) highlight the primacy of abstraction among CT skills by referring to it at “CT’s keystone” (p. 39).
- Five texts name decomposition (sometimes referred to as “modularization”) as an important CT skill (Angeli et al., 2016; Brennan & Resnick, 2012; Grover & Pea, 2013; Weintrop et al., 2015; Wing, 2006). Decomposition is the skill of breaking down a problem or system into smaller parts to enable understanding, solution, and/or maintenance.
- Five texts describe testing and debugging as essential to computational thinking (Angeli et al., 2016; Brennan & Resnick, 2012; Grover & Pea, 2013; Papert, 1980; Weintrop et al., 2015). Put simply, this skill involves checking one’s work at the end of a problem-solving and/or system-building process, and, in the event of unsatisfactory results, determining why the end product does not function as desired.
- Algorithmic thinking is referenced in four of the texts (Angeli et al., 2016; Grover & Pea, 2013; Israel et al., 2015; Papert, 1980). Papert’s (1980) description of “deliberately thinking like a computer…in a step-by-step, literal, mechanical fashion” (p. 27) reflects the development of a logical sequence of steps and/or instructions that is the hallmark of algorithmic thinking.
- Four of the nine texts name various data practices as essential computational thinking skills (Fessakis, Gouli & Mavrouli, 2013; Grover & Pea, 2013; Israel et al., 2015; Weintrop et al., 2015). Weintrop et al. (2015) present a comprehensive list of such practices comprised of collecting data, creating data, manipulating data, analyzing data, and visualizing data (p. 135).
Several computational concepts were highlighted in addition to the skill clusters described above. These include sequences, parallel thinking, conditional logic, operators, events, iteration, and recursion (Brennan & Resnick, 2012; Grover & Pea, 2013; Weintrop et al., 2015).
The above analysis allows for the creation of a common definition of computational thinking. By all accounts, CT is first and foremost a way of formulating and solving problems. To think computationally, one must be able to detect patterns and use this data to abstract models and/or processes to apply to a range of problems (rather than solving a single problem based on unique characteristics). One must be able to decompose large complex tasks, then create and implement logical, step-by-step processes (algorithms) to work toward desired ends. One must use a range of data management skills effectively, and continually question and tinker with the final product until it makes sense and performs as desired. Throughout it all, the thinker must make use of such computational concepts as iteration and recursion, parallelism and conditionals, sequences, events, and operators.
References
Aho, A. V. (2012). Computation and Computational Thinking. The Computer Journal, 55(7), 832-835. doi:10.1093/comjnl/bxs074
Angeli, C., Voogt, J., Fluck, A., Webb, M., Cox, M., Malyn-Smith, J., & Zagami, J. (2016). A K-6 computational thinking curriculum framework: Implications for teacher knowledge. Journal of Educational Technology & Society, 19(3), 47-57. https://www.lib.uwo.ca/cgi-bin/ezpauthn.cgi?url=http://search.proquest.com/docview/1814440935?accountid=15115
Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Retrieved from http://scholar.harvard.edu/kbrennan/publications/new-Frameworks-Studying-And-Assessing-Development-Computational-Thinking
Fessakis, G., Gouli, E., & Mavroudi, E. (2013). Problem solving by 5–6 years old kindergarten children in a computer programming environment: A case study. Computers & Education, 63, 87-97. doi:10.1016/j.compedu.2012.11.016
Grover, S., & Pea, R. (2013). Computational Thinking in K-12: A Review of the State of the Field. Educational Researcher, 42(1), 38-43. doi:10.3102/0013189x12463051
Israel, M., Wherfel, Q. M., Pearson, J., Shehab, S., & Tapia, T. (2015). Empowering K-12 Students With Disabilities to Learn Computational Thinking and Computer Programming. TEACHING Exceptional Children, 48(1), 45-53. doi:10.1177/0040059915594790
Kafai, Y. B., & Burke, Q. (2013). Computer Programming Goes Back to School. Phi Delta Kappan,95(1), 61-65. doi:10.1177/003172171309500111
Lye, S. Y., & Koh, J. H. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41, 51-61. doi:10.1016/j.chb.2014.09.012
Papert, S. (1980). Mindstorms: children, computers, and powerful ideas. New York: Basicbooks.
Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (2015). Defining Computational Thinking for Mathematics and Science Classrooms. Journal of Science Education and Technology, 25(1), 127-147. doi:10.1007/s10956-015-9581-5
Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35. doi:10.1145/1118178.1118215
Aho, A. V. (2012). Computation and Computational Thinking. The Computer Journal, 55(7), 832-835. doi:10.1093/comjnl/bxs074
Angeli, C., Voogt, J., Fluck, A., Webb, M., Cox, M., Malyn-Smith, J., & Zagami, J. (2016). A K-6 computational thinking curriculum framework: Implications for teacher knowledge. Journal of Educational Technology & Society, 19(3), 47-57. https://www.lib.uwo.ca/cgi-bin/ezpauthn.cgi?url=http://search.proquest.com/docview/1814440935?accountid=15115
Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Retrieved from http://scholar.harvard.edu/kbrennan/publications/new-Frameworks-Studying-And-Assessing-Development-Computational-Thinking
Fessakis, G., Gouli, E., & Mavroudi, E. (2013). Problem solving by 5–6 years old kindergarten children in a computer programming environment: A case study. Computers & Education, 63, 87-97. doi:10.1016/j.compedu.2012.11.016
Grover, S., & Pea, R. (2013). Computational Thinking in K-12: A Review of the State of the Field. Educational Researcher, 42(1), 38-43. doi:10.3102/0013189x12463051
Israel, M., Wherfel, Q. M., Pearson, J., Shehab, S., & Tapia, T. (2015). Empowering K-12 Students With Disabilities to Learn Computational Thinking and Computer Programming. TEACHING Exceptional Children, 48(1), 45-53. doi:10.1177/0040059915594790
Kafai, Y. B., & Burke, Q. (2013). Computer Programming Goes Back to School. Phi Delta Kappan,95(1), 61-65. doi:10.1177/003172171309500111
Lye, S. Y., & Koh, J. H. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41, 51-61. doi:10.1016/j.chb.2014.09.012
Papert, S. (1980). Mindstorms: children, computers, and powerful ideas. New York: Basicbooks.
Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (2015). Defining Computational Thinking for Mathematics and Science Classrooms. Journal of Science Education and Technology, 25(1), 127-147. doi:10.1007/s10956-015-9581-5
Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35. doi:10.1145/1118178.1118215