0% found this document useful (0 votes)
26 views6 pages

Computational Thinking, - What and Why - Jeannette Wing

Computational thinking is a problem-solving process that involves formulating problems and solutions in a way that can be executed by humans or machines, emphasizing abstraction and the analysis of complex systems. It has influenced various disciplines beyond computer science, including biology, economics, and social sciences, and is increasingly recognized as essential for education and professional development. The document outlines the benefits of computational thinking, its application in everyday life, and ongoing educational initiatives aimed at promoting its understanding and implementation across different levels of education.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views6 pages

Computational Thinking, - What and Why - Jeannette Wing

Computational thinking is a problem-solving process that involves formulating problems and solutions in a way that can be executed by humans or machines, emphasizing abstraction and the analysis of complex systems. It has influenced various disciplines beyond computer science, including biology, economics, and social sciences, and is increasingly recognized as essential for education and professional development. The document outlines the benefits of computational thinking, its application in everyday life, and ongoing educational initiatives aimed at promoting its understanding and implementation across different levels of education.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Computational Thinking: What and Why?

Jeannette M. Wing17
November 2010bookmark01

In my March 2006 CACM article I used the term "computational thinking" to articulate a vision of how
everyone - not just those who specialize in computer science - can benefit from thinking like a computer
scientist [Wing06]. So what is computational thinking? Here's a definition that Jan Cuny of the National
Science Foundation, Larry Snyder of the University of Washington, and I used; it was inspired by an
email exchange I had with Al Aho of Columbia University:
Computational Thinking is the thought processes involved in formulating problems and their
solutions, so that such solutions are represented in a form that can be effectively executed by an
information processing agent [CunySnyderWing10]
Informally, computational thinking describes the mental activity of formulating a problem so that it
admits a computational solution. The solution can be carried out by a human, a machine or, more
generally, a combination of humans and machines.
When I use the term computational thinking, my interpretation of the words "problem" and "solution" is
broad, and in particular I am not referring only to mathematically well-defined problems whose
solutions are fully analyzable - for example, a proof, an algorithm, or a program - but also to real-world
problems whose solutions may be in the form of large, complex software systems. Computational
thinking therefore overlaps with logical thinking and systems thinking: it includes algorithmic thinking
and parallel thinking, which in turn draw on other forms of thought processes, such as compositional
reasoning, pattern matching, procedural thinking, and recursive thinking.
Broadly interpreted, computational thinking is used in the analysis and design of problems and their
solutions. The most important and high-level process in computational thinking is abstraction: it is used
in defining patterns, generalizing from instances, and parameterizing; to make one object represent
many; and to capture essential features common to a set of objects while hiding irrelevant differences
between them. For example, an algorithm is the abstraction of a process that takes certain inputs,
executes a sequence of steps, and produces outputs to satisfy a desired goal. An abstract data type
defines an abstract set of values, and operations to manipulate those values, while hiding the actual
representation of the values from the user of the data. The design of efficient algorithms inherently
involves the design of abstract data types. Abstraction gives us the power to scale and deal with
complexity.
Applying abstraction recursively allows us to build larger and larger systems, with the base case - at
least for computing - being just bits (0 and 1). In computing, we routinely build systems in terms of
layers of abstraction, which allows us to focus on a single layer at a time and on the formal relationships
(e.g., "uses", "improves", or "implements", "simulates") between adjacent layers. When we write a
program in a high-level language, we do not worry about the details of the underlying hardware, the
operating system, the file system, or the network; rather, we trust the compiler to be a correct
implementation of the language's semantics. As another example, the delicate architecture of the

1 Translation: Dr. José Enrique Alvarez Estrada ([email protected]).


1
Internet, with the TCP/IP protocol at its core, has allowed for a multitude of unforeseen applications to
proliferate at the highest layer, as well as a multitude of unforeseen hardware platforms, media, and
devices at the lowest layer.
Computational thinking is based on both mathematical thinking and engineering thinking. But unlike
mathematics, our computing systems are limited by the physics of the underlying information
processing agent and its operating environment. And that's why you have to worry about boundary
conditions, failures, malicious actors, and the unpredictability of real life. And unlike other engineering
disciplines, thanks to software (our only "secret weapon"), in computer science we can build virtual
worlds that are not restricted by the restrictions of physical reality. Therefore, in cyberspace our
creativity is limited only by our imagination.

Computational Thinking and Other Disciplines


Computational thinking has already influenced the research agenda of all science and engineering
disciplines. From the beginning - decades ago - in the use of computational and simulation models, to
the current use of data mining and machine learning to analyze massive amounts of data, computer
science is recognized as the third pillar of science, along with theory and experimentation [PITAC
2005]. The accelerated sequencing of the human genome using the shotgun algorithm sparked interest in
the biology community in computational methods, and not just in computational artifacts (computers
and networks). The volume and speed at which scientists and engineers are now collecting and
producing data—through instruments, experiments, and simulations—in turn demands advances in data
analysis, storage, retrieval, and visualization. The National Science Foundation's (NSF) Cyber-enabled
Discovery and Innovation (CDI) program, with a five-year duration and a budget of US$100 million per
fiscal year, is, in a nutshell, “computational thinking for science and engineering.” Every NSF scientific
directorate and office participates in the CDI.
Computational thinking has also begun to influence disciplines and professions beyond science and
engineering. For example, active areas of study include algorithmic medicine, computational
archaeology, computational economics, computational finance, computing and journalism,
computational law, computational social sciences, and digital humanities. Data analytics is used in army
recruit training, spam and credit card fraud detection, recommendation and reputation services, and
personalized supermarket coupons.
At Carnegie Mellon University, computational thinking is everywhere. We have undergraduate and
graduate programs, as well as "Computing X" pathways, where X is applied to learning mathematics,
biology, chemistry, design, economics, finance, linguistics, neuroscience, mechanics, physics and
statistics. We even have a computational photography course. We have programs in Computational
Music and Computing, Organizations and Society. We have joint programmes between computer
science and other disciplines: for example Algorithms and Combinatorial Optimization (computing,
mathematics and business); Computer Science and the Arts; Entertainment Technology (computing and
drama); Human-Computer Interaction (computing, design and psychology); Language Technologies
(computing and linguistics); Logic and Computation (computing and philosophy); Pure and Applied
Logic (computing, mathematics and philosophy); and Robotics (computing, electrical engineering and
mechanical engineering).

2
Computational Thinking in Everyday Life
Computational thinking can be applied in everyday life. The Department of Computer Science at
Carnegie Mellon provided me with the following stories:
Pipelining. Randy Bryant, Dean of the School of Computer Science, was thinking about how to speed
up the Sunday School graduation ceremony. He designed an efficient flow by properly positioning
people to stand so that when Mark Stehlik reads each graduate's name, they can receive their diploma,
give him a handshake or hug, and take a photo with him. This channeling allows for a steady flow of
students across the stage (frequently, bottlenecks in the flow occurred when graduates dropped their
caps while giving Mark a hug.)
Seth Goldstein observed: "At buffets, why do they always put the dressing before the salad? And the
sauce before the main dish? Why is the cutlery at the beginning? They need some channeling."
Hashing. After a talk about my vision of computational thinking at a faculty meeting in my department,
Danny Sleator came up to me to tell me that at home they use a particular hash function to store Lego
pieces. According to Sleator, they use dispersion in these categories: thick rectangular blocks; other
thick blocks (non-rectangular); thin blocks (any shape); axles, rivets and spacers; axle ties, balls and
sockets; and miscellaneous. They even have rules for classifying pieces that might fit into more than one
category. He said that "even though this method seems rather crude, it reduces the time spent searching
for a part by a factor of 10." Avrim Blum was listening as Danny told me this story and chimed in to
say, "We use a different spread function at our house."
Sorting. The following story I took verbatim from an email sent by Roger Dannenberg, a professional
trumpeter and computer scientist. "I joined an orchestra, and the director gave us folders with about 200
disorganized scores and a list of about 40 titles, when we were about to give a concert. Everyone began
searching through the pile, pulling out the scores one by one. I decided to order the 200 scores
alphabetically -O(N log (N))- and then insert them -O(M log (N))-. I was still sorting them out while the
other orchestra members were barely halfway through, and I started getting some mocking glances, but
in the end I finished in first place. "That's computational thinking."
Benefits of Computational Thinking
Computational thinking is the new literacy of the 21st century. It allows us to adapt computing to our
needs. Why should everyone learn a little computational thinking? Cuny, Snyder and I advocate the
following benefits [CunySnyderWing10]:
Computational thinking for all means being able to:
• Understand which aspects of a problem are susceptible to being solved by computation
• Evaluate how suitable computational tools and techniques are for a problem
• Understanding the limitations and power of computational tools and techniques
• Apply or adapt a computational tool or technique to a new use
• Recognize an opportunity to use computing in new ways
• Apply computational strategies such as divide and conquer in any domain
For scientists, engineers and other professionals, computational thinking also means being able to:
• Apply new computational methods to problems

3
• Reformulate problems so that they are susceptible to applying computational strategies
• Discovering new "science" through the analysis of large volumes of data
• Formulate new questions, which they had not dared to consider or ask about their scale, easily
through computation
• Explain problems and solutions in computational terms.

Computational Thinking in Education


Universities in the United States and abroad are reviewing their computer science degree curricula.
Many are changing their first computer science course to cover fundamental principles and concepts,
not (just) programming. For example, at Carnegie Mellon we have recently revised our first-year
undergraduate courses to promote computational thinking among non-majors [Link10].
Moreover, the interest and excitement surrounding computational thinking has grown beyond research
and undergraduate education. The potential to spread computational thinking widely throughout the
population has motivated several recent projects, which I will outline below. Most of them focus on
primary and secondary school. Promoters visit professional, governmental, academic and industrial
organizations. Computational thinking has also spread internationally.
The Association of Colleges, with support from NSF, is designing a new Advanced Placement (AP)
course that covers fundamental computing concepts and computational thinking
(http://csprinciples.org). This year, five universities are experimenting with versions of this course: the
University of North Carolina at Charlotte, UC Berkeley, Metropolitan State College of Denver, UC San
Diego and the University of Washington. The plan is to expand it to include more schools, high schools,
community colleges and universities next year.
The National Board of Academies of Computer Science and Telecommunications held a series of
workshops titled Computational Thinking for All, focused on identifying fundamental computer science
concepts that can be taught to elementary and secondary school students. The first report of the
workshop [NRC10] provides multiple perspectives on computational thinking.
On May 29, 2009, at an event on The Hill sponsored by ACM, CRA, CSTA, IEEE, Microsoft, NCWIT,
NSF, and SWE, a call was made to add the "C" (computing) to STEMbookmark12. The United States
House of Representatives designated the first week of December as Computer Science Education Week
or CSEdWeek (http://www.csedweek.org/), which is sponsored by ABI, ACM, BHEF, CRA, CSTA,
Dot Diva, Google, Globaloria, Intel, Microsoft, NCWIT, NSF, SAS, and Upsilon Pi Epsilon. On July
30, 2010, Congressman Jared Polis of Colorado's 2nd District introduced the Computer Science
Education Act (HR5929) to strengthen computer science education in elementary and secondary
schools.
In September 2010, the NSF launched the Computing Education for the 21st Century (CE21) program
aimed at developing computational thinking skills in students and teachers from primary to
undergraduate levels. CE21 builds on the successes of NSF’s Pathways to Revitalizing CISE
Undergraduate Computing Education (CPATH) program and the Broadening Participation in
Computing (BPC) program. CE21 places special emphasis on activities that support Project CS10K, an
initiative launched by NSF through BPC that aims to catalyze an overhaul of the high school
2 Acronym for Science, Technology, Engineering and Mathematics. See
http://en.wikipedia.org/wiki/STEM_fields
4
curriculum, proposing a new AP course as its centerpiece, as well as preparing 10,000 teachers to teach
the new courses in 10,000 high schools by 2015.
In August 2010, the British Royal Society announced that it is leading an 18-month project to review
"the way computing is taught in schools, with the support of 24 organisations from across the computing
community, including learned societies, professional bodies, universities, and industry"
(http://royalsociety.org/Education-Policy/Projects/). One of the participants is Computing in Schools
(CAS), a coalition led by the British Computer Society with sponsorship from Microsoft Research and
other industry partners.
Since 2006, with the help first of Google and then of Microsoft, Carnegie Mellon has held CS4HS
summer workshops aimed at high school teachers, to dispel the perception that there is more to
computer science than computer programming. The CS4HS program was expanded in 2007 to UCLA
and the University of Washington. By 2010, under the auspices of Google, CS4HS had expanded to 20
schools in the United States and 14 in Europe, the Middle East and Africa.
Since 2007, Microsoft Research has funded Carnegie Mellon's Center for Computational Thinking:
http://wwwhttp://www.cs.cmu.edu/~CompThink/.cs.cmu.edu/~CompThink/. The Center supports both
research and the dissemination of educational projects.
In October 2010, Google launched the Exploring Computational Thinking website
(http://www.google.com/edu/computational-thinking/index.html), which has a wealth of links to further
web resources, including lesson plans for elementary and secondary teachers in science and
mathematics.
Computer Science Unplugged, http://csunplugged.org/, a website created by Tim Bell, Mike Fellows,
and Ian Witten, teaches computing without using computers. It is especially suitable for primary and
secondary school children. Several dozen people working in many countries including New Zealand, the
United States, Sweden, Australia, China, Korea, Taiwan and Canada contribute to this very popular
website.
Additionally, panels and discussions on computational thinking have been plentiful at venues such as
SIGCSE and the ACM Education Council. CRA-E presented a white paper [CRA-E10] at the Snowbird
CRA conference in July 2010, which includes recommendations for computational thinking courses.
CSTA produces and disseminates the Computational Thinking Resource Set: A Problem-Solving Tool
for Every Classroom (http://www.csta.acm.org/).

Final Comments
Computational thinking is not just about computation. The educational benefits of being able to think
computationally transfer to any other domain, improving and strengthening intellectual skills.
Computer scientists see the value of thinking abstractly, at various levels of abstraction, of abstracting to
manage complexity and to deal with scale, etc. We know the value of these capabilities. Our immediate
task is to better explain to non-experts what we mean by computational thinking, and the benefits of
being able to think computationally. Please join me in helping spread the word!

Literature
[CRA-E10] Computing Research Association, Creating Environments for the Education of
Computational Researchers, August 9, 2010.

5
http://www.cra.org/uploads/documents/resources/rissues/CRA-E-Researcher-Education.pdf
[CunySnyderWing10] Jan Cuny, Larry Snyder, and Jeannette M. Wing, Demystifying Computational
Thinking for Non-Experts, work in progress, 2010.
[NRC10] National Research Council, Report of a Workshop on the Scope and Nature of Computational
Thinking, 2010
http://www8.nationalacademies.org/cp/projectview.aspx?key=48969
[Link10] A Dean's Perspective, The Link, September 2010.
[PITAC05] Chairman of the Information Technology Advisory Council, Computer Science: Ensuring
America's Competitiveness, Report to the President, June 2005.
[Wing06] Jeannette M. Wing, Computational Thinking, Communications of the ACM, vol. 49, no. 3,
March 2006, pages 33-35.

Acronym:
ABI: Anita Borg Institute for Women and Technology
ACM: Association for Computing Machinery
BHEF: Business-Higher Education Forum
CISE: Computer and Information Science and Engineering
CRA: Computing Research Association
CRA-E: Computing Research Association-Education
CSTA: Computer Science Teachers Association
CSTB: Computer Science and Telecommunications Board
IEEE: Institute for Electrical and Electronic Engineers
NCWIT: National Center for Women and Information Technology
NSF: National Science Foundation
SIGCSE: ACM Special Interest Group on Computer Science Education
SWE: Society for Women Engineers

You might also like