Computational thinking

Computational Approaches
A problem solving strategy connected to computational approaches. In the context of the Scalable Game Design project we refer to computational thinking as conceptual means to integrate scalable game design and computational science. Both include the notions of analysis, design, the use of representations and visualizations. AgentSheets is a computational thinking tool allowing users to engage into fluid design processes including bottom up and top down approaches.

Clayton Lewis, in talks at the Denver and Boulder Cafes Scientifiques, has outlined a definition of computational thinking based on the representational nature of computational systems.

In a representational system the things, attributes, relationships, changes, behaviors, and questions in a target domain are associated with stuff in a representation domain... ... in such a way that questions of interest in the target domain can be answered in the representation domain.

The stuff in a computational representation is data structures and programs.

Computational stuff provides storage, interaction, automation, and communication as benefits.

Computational thinking is seeing the possibility of computational representation in situations. That is, students (or teachers) are thinking computationally when they can recognize in some situation of interest the possibility of representing important aspects of it using computational stuff. For example, students who saw that they could represent predator-prey interactions in an Agentsheets program would be demonstrating computational thinking.

Clayton's blog at http://comprep.blogspot.com develops the representational view of computation in more depth.

Computational Thinking Inventory
Our goal is to develop a universal Computational Thinking Inventory. Computational thinking is quickly gaining traction as a term identifying cognitive processes that are related to computation. Situated somewhere between highly concrete skills such as programming and more abstract competency models such as IT fluency, computational thinking is establishing itself as a term striking the right balance between concrete and abstract. Still, the question remains of what exactly computational thinking really is, how it can be fostered, and how it can be assessed.

The notion of computational thinking often comes up in the context of motivational challenges in computer science education. Game design, robotics, and to a lesser degree computational science, have been employed as computer applications enticing students, especially younger students at the middle schools level, to participate in constructive computer science related activities. If they can make a game or program a robot, it is argued, they must have achieved some kind of fluency with information technology. This fluency, in turn, must be based on some type of computational thinking. The problem with this line of reasoning can be that at this point we cannot fully differentiate between what the National Academy of Sciences calls intellectual capabilities and contemporary IT skills. That is, did students really gain computational thinking skills that are transferable to other domains or did they merely learn how to use specific computer programs to control robots or to make games? The transfer of skills to different domains is a complex research topic, but is the basis for computational thinking. By and large researchers agree that transfer does not just happen automatically. Concepts that, to the trained eye, may be identical in different domains, can be hard to recognize as analogous by novice learners.

The strategy is to systematically integrate three different computing applications – game design, robotics and computational science – with the goal to create a universal computational thinking inventory:


 * the inventory will be seeded with computational thinking patterns such as transportation, push, pulling, and diffusion that have been used in scalable game design. Patterns describe interactions between objects that are common to a large set of applications and can be applicable to all three domains.


 * a gradual approach consisting of beginner, intermediate, and advanced courses in all three applications is used to develop computational thinking skills incrementally. Advanced computational thinking patterns such as collaborative diffusion or Maslow’s hierarchy of needs allow students to create sophisticated Sims-like games, but also create advanced robots with layered behaviors such as subsumption architectures.


 * courses will be aligned to each other. For instance, a beginner course on computational science will reinforce concepts learned in the beginner scalable game design course preceding it. Reinforcement will include explicit references to previously covered materials to promote transfer.


 * application/domain boundaries will be blurred. While courses in each application domain will have a strong focus, it will include early examples and explorations in the other applications. For instance, computational science courses will include versions of patterns learned in game design.

An essential part of our strategy is to develop scaffolding mechanisms to foster the use of computational thinking patterns and also to create assessment instruments to evaluate the mastery of the computational thinking inventory. For the strategy to work we define success as evidence of mastery of transfer, e.g., “now that you can build a space invaders game can you build a mud slide simulation?” That is, the scope of assessment does need to include all three application domains and needs to investigate  the transfer of learning.

Exernal links

 * CSTA, ISTE, NSF operational definition of computational thinking
 * Computational Thinking summer camp for girls, using AgentSheets, at the University of Memphis, 2009
 * Seymour Papert, An Exploration in the Space of Mathematics Educations, International Journal of Computers for Mathematical Learning, Vol. 1, No. 1, pp. 95-123, in 1996
 * Wing, J. M. (2006). Computational Thinking, CACM 49(3), pp. 33--35.
 * wikipedia definition of computational thinking
 * CSTA view of computational thinking
 * CSTA slide + speech presentation (this is a zipped wmv movie file, Mac users can use the VLC media player)
 * Fletcher, G. H. and Lu, J. J. 2009. Education, Human computing skills: rethinking the K-12 experience. Commun. ACM 52, 2 (Feb. 2009), 23-25.
 * Repenning, A., Webb, D., Ioannidou, A., Scalable Game Design and the Development of a Checklist for Getting Computational Thinking into Public Schools, The 41st ACM Technical Symposium on Computer Science Education, SIGCSE 2010, (Milwaukee, WI), ACM Press.
 * 2010 NSF Broadening Participation meeting breakout session on Computational Thinking led by Jill Denner, Alexander  Repenning, and Irene Lee
 * Computational Thinking for Everyone: A Workshop Series, The National Academies