What Is Computational Thinking?

"... A set of thinking or problem- solving strategies that are used to solve problems when working with computers" (Peckham 1)

"Computational thinking is an approach to solving a problem that empowers the integration of digital technologies with human ideas. It does not replace an emphasis on creativity, reasoning and critical thinking, but it re-emphasizes those skills while highlighting ways to organize a problem so that a computer can help. It extends and refocuses human creativity and critical thinking by allowing the computer to extend and refocus oneís problem-solving capacity." ("Computational Thinking: Teacher Resources" pg. 10)

"Computational thinking (CT) is a problem-solving process that includes (but is not limited to) the following characteristics:

These skills are supported and enhanced by a number of dispositions or attitudes that are essential dimensions of computational thinking. These dispositions or attitudes include:

"Computational thinking is an approach to solving a problem that empowers the integration of digital technologies with human ideas. It does not replace an emphasis on creativity, reasoning and critical thinking, but it re-emphasizes those skills while highlighting ways to organize a problem so that a computer can help. It extends and refocuses human creativity and critical thinking by allowing the computer to extend and refocus oneís problem-solving capacity." (Computational Thinking: Teacher Resources pg. 10)

Computational thinking builds on the power and limits of computing processes, whether they are executed by a human or by a machine.î (Wing pg. 33)

"Computational thinking is thinking recursively.
It is parallel processing.
It is interpreting code as data and data as code.
It is type checking as the generalization of dimensional analysis.
It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name.
It is recognizing both the cost and power of indirect addressing and procedure call.
It is judging a program not just for correctness and efficiency but for aesthetics, and a systemís design for simplicity and elegance.
Computational thinking is using abstraction and decomposition when attacking a large complex task or designing a large complex system.
It is separation of concerns.
It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable.
It is using invariants to describe a systemís behavior succinctly and declaratively.
It is having the confidence we can safely use, modify, and influence a large complex system without understanding its every detail.
It is modularizing something in anticipation of multiple users or prefetching and caching in anticipation of future use.
Computational thinking is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction.
It is calling gridlock deadlock and contracts interfaces.
It is learning to avoid race conditions when synchronizing meetings with one another.
Computational thinking is using heuristic reasoning to discover a solution.
It is planning, learning, and scheduling in the presence of uncertainty.
It is search, search, and more search, resulting in a list of Web pages, a strategy for winning a game, or a counterexample.
Computational thinking is using massive amounts of data to speed up computation.
It is making trade-offs between time and space and between processing power and storage capacity." (Wing pg. 33- 34)



Why is Computational Thinking Important?

"Students who learn computational thinking across the curriculum begin to see a relationship between different subjects as well as between school and life outside of the classroom." ("What is CT?")

"It is difficult to find an occupation or avocation where workers and technology do not interact. We all need to understand how, when, and where computers and other digital tools can help us solve problems, and we all need to know how to communicate with others who can assist us with computer-supported solutions. Computational thinking can help students realize that computers can automate solutions that solve problems more efficiently and extend their own thinking." (Computational Thinking: Teacher Resources pg. 10)

Computational methods and models give us the courage to solve problems and design systems that no one of us would be capable of tackling alone.î (Wing pg. 33)

Computational thinking is thinking recursively.
It is parallel processing.
It is interpreting code as data and data as code.
It is type checking as the generalization of dimensional analysis.
It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name.
It is recognizing both the cost and power of indirect addressing and procedure call.
It is judging a program not just for correctness and efficiency but for aesthetics, and a systemís design for simplicity and elegance.
Computational thinking is using abstraction and decomposition when attacking a large complex task or designing a large complex system.
It is separation of concerns.
It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable.
It is using invariants to describe a systemís behavior succinctly and declaratively.
It is having the confidence we can safely use, modify, and influence a large complex system without understanding its every detail.
It is modularizing something in anticipation of multiple users or prefetching and caching in anticipation of future use.
Computational thinking is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction.
It is calling gridlock deadlock and contracts interfaces.
It is learning to avoid race conditions when synchronizing meetings with one another.
Computational thinking is using heuristic reasoning to discover a solution.
It is planning, learning, and scheduling in the presence of uncertainty.
It is search, search, and more search, resulting in a list of Web pages, a strategy for winning a game, or a counterexample.
Computational thinking is using massive amounts of data to speed up computation.
It is making trade-offs between time and space and between processing power and storage capacity." (Wing pg. 33- 34)



External Resources

Dedicated To Computational Thinking

Computer Science Teachers Association Should use this for CSTA instead????
Carnegie Mellon University
Google
Course and Curriculum for Humanities, Math and CS
The International Society for Technology in Education
Computer Science For High School (CS4HS)

Curriculum Standards

Computer Science Framework
CSTA Standards
ISTE Standards

Even More External Resources

CSTA Highlighted Resources
Ensemble Computing Portal: CT Resources
Exploring CS: Resources

Works Cited

"What Is CT?". Google: Exploring Computational Thinking. Google, n.d. Web. 04/18/12.
Barr, David; Conery, Leslie; Harrison, John. Computational Thinking: A Digital Age Skill for Everyone. Learning & Leading with Technology. March/April 2011: pages 20 - 23. Periodical.
Barr, Valerie; Stephenson, Chris. What is Involved and What is the Role of the Computer Science Education Community?. ACM Inroads. March 2011: pages 48 - 54. Periodical.
Computer Science Teachers Association; International Society for Technology in Education. Operational Definition of Computational Thinking. Copyright 2011.
Computer Science Teachers Association; International Society for Technology in Education (2011). Computational Thinking: Leadership Toolkit. 1st ed.
Computer Science Teachers Association; International Society for Technology in Education (2011). Computational Thinking: Teacher Resources. 2nd ed.
Peckham, Joan. Is Computational Thinking the Fourth "R"? CSTA Voice. May 2011: pages 1 - 2. Periodical.
Wing, Jeannette M. Computational Thinking. Communications of the ACM. March 2006/Vol. 49, No. 3: pages 33 ñ 35.