What is computational thinking?
Over the past five years, we have developed a computational thinking framework based upon our studies of interactive media designers. The context of our research is Scratch — a programming environment that enables young people to create their own interactive stories, games, and simulations, and then share those creations in an online community with other young programmers from around the world. By studying activity in the Scratch online community and in Scratch workshops, we have developed a definition of computational thinking that involves three key dimensions: (1) computational concepts, (2) computational practices, and (3) computational perspectives. Observation and interviews have been instrumental in helping us understand the longitudinal development of creators, with participation and project portfolios spanning weeks to several years. Workshops have been an important context for understanding the practices of the creator-in-action.
- sequence: identifying a series of steps for a task
- loops: running the same sequence multiple times
- parallelism: making things happen at the same time
- events: one thing causing another thing to happen
- conditionals: making decisions based on conditions
- operators: support for mathematical and logical expressions
- data: storing, retrieving, and updating values
- experimenting and iterating: developing a little bit, then trying it out, then developing more
- testing and debugging: making sure things work — and finding and solving problems when they arise
- reusing and remixing: making something by building on existing projects or ideas
- abstracting and modularizing: exploring connections between the whole and the parts
- expressing: realizing that computation is a medium of creation, "I can create."
- connecting: recognizing the power of creating with and for others, "I can do different things when I have access to others."
- questioning: feeling empowered to ask questions about the world, "I can (use computation to) ask questions to make sense of (computational things in) the world."
Other Definitions and Inspirations
Many people are contributing to the conversations about computational thinking — what it is and how to support its development in young learners. Here are a just few of the many resources that we have found helpful. If you have resources that you would like added to this list, please contact us.
- Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community? ACM Inroads, 2(1), 48- 54.
- Cuny, J., Snyder, L., & Wing, J.M. (2010). Demystifying computational thinking for non-computer scientists. Unpublished manuscript in progress, referenced in http://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf
- Google. (n.d.). Exploring computational thinking. http://www.google.com/edu/computational-thinking/
- 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
- Guzdial, M. (2008). Education: Paving the way for computational thinking. Commun. ACM, 51(8), 25-27. doi: 10.1145/1378704.1378713
- Lee, I., Martin, F., Denner, J., Coulter, B., Allan, W., Erickson, J., Malyn-Smith, J., Werner, L. (2011). Computational thinking for youth in practice. ACM Inroads, 2(1), 32-37. doi: 10.1145/1929887.1929902
- National Research Council. (2010). Report of a workshop on the scope and nature of computational thinking. Washington, DC: National Academies Press.
- National Research Council. (2011). Report of a workshop on the pedagogical aspects of computational thinking. Washington, DC: National Academies Press.
- Shein, E. (2014). Should everybody learn to code? Commun. ACM, 57(2), 16-18. doi: 10.1145/2557447
- Vee, A. (2013). Understanding computer programming as a literacy. Literacy in Composition Studies, 1(2), 42-64.
- Wing, J.M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.
- Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 366(1881), 3717-3725. doi: 10.1098/rsta.2008.0118