TITLE: Day 2 at SIGCSE: Another Keynote on Past and Present
AUTHOR: Eugene Wallingford
DATE: February 25, 2005 3:43 PM
DESC: Can we ever regain the halcyon simplicity of Pascal? Or has computer science, and thus its teaching, changed?
-----
BODY:
This morning's keynote was given by last year's
recipient of SIGCSE's award for outstanding
contributions to CS education,
Mordechai (Moti) Ben-Ari.
Dr. Ben-Ari was scheduled to speak last year
but illness prevented him from going to Norfolk.
His talk was titled "The Concorde Doesn't Fly
Anymore" and touched on a theme related to
yesterday's talk,
though I'm not certain he realized so.
Dr. Ben-Ari gave us a little history lesson,
taking us back to the time of the US moon landing.
He asserted that this was the most impressive
achievement in the history of technology and
reminded us that the project depended on some
impressive computing -- a program that was
delivered six months in advance of the mission,
which used only 2K of writable memory.
Then he asked the audience to date some important
"firsts" in computing history, such as the year
the first e-mail was sent. I guessed 1973, but
he gave 1971 as the right answer. (Not too bad
a guess, if I do say so myself.) In the end, all
of the firsts dated to the period 1970-1975 --
just after that moon landing. So much innovation
in a such a short time span. Ben-Ari wondered,
how much truly new have we done since then? In
true SIGCSE fashion, he made good fun of Java,
a language cobbled out of ideas discovered and
explored in the '60s and '70s, among them Simula,
Smalltalk, Pascal, and even C (whose contribution
was "cryptic syntax").
The theme of the talk was "We in computing are
not doing revolutionary stuff anymore, but that's
okay." Engineering disciplines move beyond glitz
as they mature. Valuable and essential engineering
disciplines no longer break much new ground, but
they have steady, sturdy curricula. He seemed to
say that we in computing should accept that we have
entered this stage of development and turn CS into
a mature educational discipline.
His chief example was mechanical engineering. He
contrasted the volume of mathematics, science, and
settled engineering theory and concepts required
by the ME program at his university with the same
requirements in the typical CS program. Seven math
courses instead of four; five science courses
instead of two; a dozen courses in engineering
foundations instead of three or four in computing.
Yet we in CS feel a need to appear "relevant",
teaching new material and new concepts and new
languages and new APIs. No one, he said, complains
that mechanical engineering students learn about
pulleys and inclined planes -- 300-year-old technology!
-- in their early courses, but try to teach
30-year-old Pascal in a CS program and prepare for
cries of outrage from students, parents, and industry.
In this observation, he's right, of course. We
taught Ada in our first-year courses for a few years
in the late 1990s and faced a constant barrage of
questions from parents and students as to why, and
what good would it be to them and their offspring.
But in the larger scheme of things, though, is he
right? It seems that Dr. Ben-Ari harkens back to
the good old days when we could teach simple little
Pascal in our first course. He's not alone in this
nostalgia here at SIGCSE... Pascal has a hold on
the heartstrings of many CS educators. It was a
landmark the history of CS education, when a single
language captured the zeitgeist and technology of
computing all at once, in a simple package that
appealed to instructors looking for something better
and to students who could wrap their heads around
the ideas inside of Pascal and the constructs that
made up Pascal in their early courses.
A large part of Pascal's success as a teaching
language lay in how well it supplanted languages
such as Fortran (too limited) and PL/I (too big
and complex) in the academic niche. I think PL/I
is a good language to remember in this context.
To me, Java is the PL/I of the late 1990s and
early 2000s: a language that aspires to do much,
a language well-suited to a large class of programs
that need to be written in industry today, and a
language that is probably too big and complex to
serve all our needs as the first language our
students see in computer science.
But that was just the point of
Kim Bruce's talk yesterday.
It is our job to build the right layer of abstraction
at which to teach introductory CS, and Java makes
a reasonable base for doing this. At OOPSLA last
year,
Alan Kay encouraged us
to aspire to more, but I think that he was as
disturbed by the nature of CS instruction as with
Java itself. If we could build an
eToys-like
system on top of Java, then Alan would likely be
quite happy. (He would probably still drop in a
barb by asking, "But why would you want to do that
when so many better choices exist?" :-)
In the Java world, many projects --
BlueJ,
Bruce's
ObjectDraw,
JPT,
Karel J. Robot,
and many others -- are aimed in this direction.
They may or may not succeed, but each offers an
approach to focusing on the essential ideas
while hiding the details of the industrial-strength
language underneath. And Ben-Ari might be happy
that Karel J. Robot's pedagogical lineage traces
back to 1981 and the Era of Pascal!
As I was writing the last few paragraphs,
Robert Duvall
sat down and reminded me that we live in a
different world than the one Pascal entered.
Many of our incoming students arrive on campus
with deep experience playing with and hacking
Linux. Many arrive with experience building
web sites and writing configuration scripts.
Some even come in with experience contributing to
open-source software projects. What sort of major
should we offer such students? They may not know
all that they need to know about computer science
to jump to upper-division courses, but surely
"Hello, World" in Pascal or C or Java is not
what they need -- or want. And as much as we
wax poetic about university and ideas,
the world is more complicated than that.
What students want matters, at least as it determines
the desire they have to learn what we have to teach
them.
Ben-Ari addressed this point in a fashion, asserting
that we spend a lot of time trying to making CS easy,
but that we should be trying to make it harder for
some students, so they will be prepared to be good
scientists and engineers. Perhaps so, but if we
construct our programs in this way we may find that
we aren't the ones educating tomorrow's software
developers. The computing world really is a
complex mixture of ideas and external forces these
days.
I do quibble with one claim made in the talk, in
the realm of history. Ben-Ari said, or at least
implied, that the computing sciences and the Internet
were less of a disruption to the world than the
introduction of the telegraph. While I do believe
that there is great value in remembering that we
are not a one-of-a-kind occurrence in the history
of technology -- as the breathless hype of the
Internet boom screamed -- I think that we lack
proper perspective for judging the impact of
computing just yet. Certainly the telegraph
changed the time scale of communication by orders
of magnitude, a change that the Internet only
accelerates. But computing affects so many elements
of human life. And, as Alan Kay is fond of pointing
out, its potential is far greater as a communication
medium than we can even appreciate at this point in
our history. That's why Kay reminds us of an even
earlier technological revolution: the printing press.
That is the level of change to which we in
computing should aspire, fundamentally redefining
how we talk about and do almost everything we do.
Ben-Ari's thesis resembles Kay's in its call for
simplicity, but it differs in many other ways.
Are we yet a mature a discipline? Depending on
how we answer this question, the future of computer
science -- and computer science education -- should
take radically different paths.
-----