LOGGING IN WITH . . .
Lawrence
Snyder
Computer Scientist Says All Students Should Learn to Think
'Algorithmically'
By FLORENCE OLSEN
"Every day I think, Well, does my mom need to know this stuff?"
In this case, the "stuff" is information technology, and, on many
days, Lawrence Snyder's answer to that question is yes.
A professor of computer science at the University of Washington,
Mr. Snyder was chairman of the committee that produced "Being Fluent
With Information Technology," a report published in June 1999 by
the National Research Council. It says college students need more
than computer literacy to succeed in their educational,
professional, social, and personal lives. Teaching fluency, it says
-- a deeper understanding of information technology -- should be the
goal of all colleges as they prepare students for graduation.
Mr. Snyder says he tries to practice what the report preaches.
His "CSE 100" is a
semester-length course that creates opportunities for students to
learn to use information technology as a language they speak
fluently.
Q. If fluency in information technology is not computer
literacy, what is it?
A. Think of fluency as having three kinds of knowledge -- skills,
concepts, and logical reasoning. Skills are knowing how to use
e-mail, browse the Web, and so forth. The basic concepts that
students need to know for fluency are such things as how does a
computer work, what is a network, how do we represent information
digitally, algorithmic thinking, things like that. The intellectual
capabilities needed for fluency include logical reasoning, the
ability to manage complexity, to troubleshoot and debug information
systems.
The report proposed teaching fluency in the context of projects
that require students to use those three kinds of knowledge. So let
me give you an example: formulating an H.I.V.-tracking system for a
hospital or doctor's office. It's a great project. It is a database
project, because you need to record clients coming into the clinic,
to keep track of the specimens they give, and where the specimens
are sent out for testing. A project gives you a chance to learn and
practice three or four skills, three or four concepts, and three or
four capabilities.
Q. What is algorithmic thinking, and why is that important for
English and history majors?
A. For those of us who teach it, this is the 500-pound gorilla.
It's the kind of thinking we refer to many times when we talk about
problem-solving in mathematics and science. It is thinking in a
procedural way to solve a problem by following a step-by-step
process. You should begin with this, then do that, and so forth.
Q. Isn't that an updated version of logical thinking?
A. Yes. In fact, the reason it shows up in computer science all
the time, though it's not restricted to computer science, is that
you have to direct a computer scrupulously -- do this, do this, do
this. Everything we do in computer science is algorithmic, because
we're trying to get the computer to do our bidding.
Q. I suppose it's because you can make assumptions when you're
talking to people, but not when you're talking to a
computer.
A. That's right. A human listener might save your bacon when
you've left something out. When you're using algorithmic thinking,
you're attentive to being specific. So, to get back to the question,
what about English majors? If they're going to develop a system that
analyzes texts to determine which ones did Chaucer write and which
one's are somebody else's, the process for doing that analysis is
algorithmic.
Q. In addition to having students learn what it means to think
algorithmically, why did the committee conclude that basic
programming experience is important for all college graduates?
A. It's hard to understand the concept of algorithmic thinking
until you've actually sat down and tried doing it. The actual
process of algorithmic thinking and of writing an algorithm is
programming. So programming is algorithmic thinking in a tangible
form.
Q. Teaching fluency as you propose sounds like an expensive
addition to the college curriculum.
A. There is an expense. When I teach it, every student sits in a
lab for an hour after each lecture. That lab has to be filled with
PC's connected to the Internet, and they have to be maintained by a
staff that sees to it that they are always up and running. In
addition to a lab, you really need only a lecture room with a video
display into which you can plug laptop PC so you are able to "walk
through" the software during a lecture.
But I would say that most colleges and universities have a
significant amount of computer infrastructure already, probably
enough to teach this class -- though maybe not if you required it
and every one of your students took it.