thinking. Other luminaries have followed suit.
9, 18, 19, 24, 33, 35 However, this
general claim has never been substantiated with empirical research.
For example, it is reasonable to ques-
tion whether computational thinking
is of immediate use for professionals
who do not design computations—for
example, physicians, surgeons, psy-
chologists, architects, artists, lawyers,
Employers are turning to compe-
tency-based assessment faster than
educational institutions. Many employ-
ers no longer trust transcripts and diplo-
mas. Instead they organize interviews
as rigorous problem-solving sessions
with different groups in the company.
An applicant will not be hired without
demonstrating competence in solving
the kinds of problems of interest to the
employer. The idea of assessing skill by
performance is actually quite common
in education. In sports, music, theater,
and language departments, for example,
students audition for spots on the team,
places in the orchestra, roles in the play,
or competency certificates at a language.
Although code-a-thons are becoming
more prevalent and many computing
courses include projects that assess skill
by performance, computing education
would benefit from a deep look at com-
petency-based assessment.
Given that so much education is
formulated around students acquiring
knowledge, looking carefully at skill
development in computational thinking is a new and challenging idea. We
will benefit our students by learning
to approach and assess computational
thinking as a skill.
Question 3: Is Computational
Thinking Good for Everyone?
The third question addresses a bundle
of claims about benefits of computational thinking. Let us unpack them
and see which claims are substantiated
and which are not.
Wing’s vision for the computational
thinking movement was that “
everyone, not just those who major in computer science, can benefit from thinking like a computer scientist”
36,37 At
a high level it is hard to question this
claim—more tools in the mental toolbox seems like a worthy goal. However,
on a closer look not everyone benefits
and some claims do not seem to benefit anyone. Consider the following.
There is little doubt that people
who design and produce computa-
tional models and software in many
fields—let’s call them computational
designers—develop strong skills of
computational thinking. Experienced
computational designers believe they
are sharper and more precise in their
thinking and are better problem solvers.
Recognizing this early on, Alan Per-
lis was one of the first to generalize
(1960): he claimed that everyone can
benefit from learning computational
Traditional versus New
Computational Thinking
The companion article traces the history of computational thinking from its origins in
the 1950s until the present time. It is a story of the mental habits and disciplines for
designing useful and reliable programs. It began with Alan Perlis in the 1950s, was well
characterized for CS by Donald Knuth and Edsger Dijkstra in the 1970s, and expanded
as the third way of science in the computational science movement of the 1980s. We
call this Traditional CT.
After 2006 a new version emerged, seeded by an article by Jeannette Wing and
then propelled when the U.S. National Science Foundation put a lot of resources into
using CT as a conceptual lever to get computing into all K– 12 schools. This massive
effort defined its own version of CT independent of the past history. It is a story of how
problems might be solved by expressing their solutions as computational steps. We call
this New CT.
The Traditional CT and the New CT are not the same. One of the important
differences is that in Traditional CT programming ability produces CT, and in New CT
learning certain concepts produces programming ability. The direction of causality is
reversed. The table here may help readers understand the origins of the trouble spots
discussed in this Viewpoint.
Traditional CT New C T
Mental habits and disciplines for designing
useful software
Formulating problems so that their solutions
can be expressed as computational steps
CT as a skill set
CT is a conceptual framework that enables
programming
Skills of design and software crafting—for
example separation of concerns, effective use
of abstraction, devising notations tailored to
one’s needs, and avoiding combinatorically
exploding case analyses
Set of problem solving concepts such as
representation, divide-and-conquer, abstrac-
tion, information hiding, verification, and logical
reasoning
A new way of conducting science, alongside
theory and experiment—a revolution in science
Useful in sciences and most other fields
Algorithms are directions to control a compu-
tational model (abstract machine) to perform
a task
Algorithms are expressions of recipes for car-
rying out tasks; no awareness of computational
models is needed
Programs are tightly coupled with algorithms;
programs are algorithms expressed in a
computer language; algorithms derive their
precision from a computational model
Programs are loosely coupled with algorithms;
algorithms are for all kinds of information
processors including humans—it is completely
optional whether an algorithm will ever be
translated into a program
Designing computations in a domain requires
extensive domain knowledge
Someone schooled in the principles of CT can
find computational solutions to problems in any
domain
End users can follow algorithms and get
the result without any understanding of the
mechanism
People engaging in any step-by-step procedure
are performing algorithms and are (perhaps
unconsciously) thinking computationally
People who are engaging in any task that could
be performed computationally are engaging in
subconscious computational thinking