TITLE: SIGCSE Day 1: Computational Thinking
AUTHOR: Eugene Wallingford
DATE: March 09, 2007 4:02 PM
I have written before about
to pitch computer science as an algorithmic science that
matters to everyone, but I have been remiss in not yet
Communications of the ACM paper on
are also available on line). Fortunately, there was a panel
session on computational thinking today at which Wing and
several like-minded folks shared the ideas and courses.
Wing's dream is that, like
the three Rs,
every child learns to think like a computer scientist.
As Alan Kay keeps telling us, our discipline fundamentally
changes how people think and write -- or should. Wing is
trying to find ways to communicate computational thinking
and its importance to everyone. In this post, I summarize
some of her presentation.
Two "A"s of computational thinking distinguish it from other
Wing gave a long, long list of examples of computational thinking.
A few will sound familiar to readers of this and similar blogs:
We ask and answer these questions: How difficult is it to solve
this problem? How can we best solve it? We reformulate problems
in terms of other problems that we already understand. We choose
ways to represent data and process. We think of
data as code, code as data.
We look for opportunities to solve problems by decomposing them
and by applying abstractions.
If only we look, we can evidence of the effects of computational
thinking in other disciplines. There are plenty of surface
examples, but look deeper. Machine learning has revolutionized
statistics; math and statistics departments are hiring specialists
in neural nets and data mining into their statistics positions.
Biology is beginning to move beyond the easy computational
problems, such as data mining, to the modeling of biological
processes with algorithms. Game theory is a central mechanism
Computational thinking is bigger than what most people think of
computer science. It is about conceptualizing, not
programming; about ideas, not artifacts.
In this regard, Wing has two messages for the general public:
- abstraction: Computational thinkers work
at multiple levels of abstraction. Other scientists do,
too, but their bread-and-butter is at a single layer.
Computational thinkers work at multiple levels at the
- automation: Computational thinkers
mechanize their abstractions. This gives us two more
"A"s -- the ability and audacity to scale up rapidly, to
build large systems.
You can find more of Wing's ideas at her
Wing was only participant on this panel. The other folks
offered some interesting ideas as well, but her energy
carried the session. The one other presentation that made
my list of ideas to try was
description of his cool
Principles of Computation
course at Carnegie Mellon. What stuck with me were some of his
non-programming, non-computing examples of important computing
concepts, such as:
- Intellectually challenging and engaging scientific problems
in computer science remain to be solved. Our only limits
are curiosity and creativity.
- One can major in computer science and do anything
-- just like English, political science, and mathematics.
My department is beginning to implement courses aimed at bringing
computational thinking to the broader university community,
including an experimental Computational Modeling and Simulation
course next fall. Perhaps we can incorporate some of these
ideas into our course, and see how they play in Cedar Falls.
- booking flights to give four talks over break, and then
thirty-nine (the Traveling Salesman Problem and computational
- washing and drying five loads of laundry (pipelining),
which even the least mathematical students can understand:
you can dry one load while washing another!
- four-way stops in the road (races and deadlocks), including
a great story of the difference between New York drivers
(race) and Pittsburgh drivers (deadlock)