was based on our observations as faculty members and as software company entrepreneurs, rather than on a
carefully researched study. When several people asked us for data to back
up our claims, we had none to offer.
Since then, however, it has been very
interesting to read the flood of email
we received in response to this article.
In hundreds of messages, we did not
get anyone saying “what are you talking about? We have no trouble hiring
knowledgeable students!” On the contrary, we got hundreds of messages
that said “Thank you for pointing out
this problem, we find it impossible to
hire competent students.” One person
related an experience where he had a
dump from a customer for a program
that had blown up and was sifting
through it trying to determine what
was causing the problem. A newly
hired student asked him what he was
doing, and he said that he was disassembling the hex into assembly language to figure out the problem. The
student, who had always considered
himself superior because of his computer science degree, replied “Oh yes,
assembly language, I’ve heard of that,”
and was amazed that the senior programmer (whose degree was in music)
could in fact figure out the problem
this way.
Another company noted that it had
found it a complete waste of time to
even interview graduates from U. S. universities, so they added at the end of
the job description the sentence “This
work will not involve Web applications
or the use of Java,” and that had served
to almost completely eliminate U.S. applicants. Here was a case of domestic
outsourcing where they were looking
for people in the U.S. who had been
trained in Europe and elsewhere and
were better educated in the fundamentals of software engineering. These are
just two examples of many similar responses, so it is clear that we have hit
on a problem here that is perceived by
many to be a serious one.
References
1. Atwood, J. how should we teach computer
science? Coding horror (Jan. 12, 2008); http://www.
codinghorror.com/blog/archives/001035.html.
2. Barnes, J. High Integrity Software—The SPARK
Approach to Safety and Security. Addison-Wesley,
2003.
3. Common Criteria for Information Technology Security
Evaluation, Version 3. 1; September 2006; www.
commoncriteriaportal.org.
4. Computer science education: Where are the software
engineers of tomorrow? Cross Talk (Jan. 2008); http://
www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarS
chonberg.html.
5. Farrell, N. Boffins deride Java. The Inquirer (Jan.
8, 2008); http://www.theinquirer.net/gb/inquirer/
news/2008/01/08/boffins-deride-java.
6. Maloney, P. and Leon, M. The state of the national
security space workforce (Apr. 2007); www.aero.org/
publications/crosslink/spring2007/ 01.html.
7. McGuire, J. Who killed the software engineer? (hint:
It happened in college.) Datamation (Jan. 21, 2008);
http://itmanagement.earthweb.com/career/article.
php/3722876.
8. National Air Traffic Services. NATS pioneers biggest
ATC advance since radar; http://www.nats.co.uk/
article/218/62/nats_pioneers_biggest_atc_advance_
since_radar.html.
9. Oates, J. Moody’s to fix sub-prime computer error.
The Register (July 3, 2008); http://www.theregister.
co.uk/2008/07/03/moodys_computer_bug.
Robert Dewar ( dewar@adacore.com) is a professor
emeritus of computer science at the Courant Institute of
New York University and is co-founder, president, and CEO
of AdaCore.
Copyright held by author.
Counterpoint: Owen Astrachan
RoBert dewar Has
ly shouldered the task of
castigating the language
commonly used in introductory programming
gracious-
courses. Dewar, like Edsger Dijkstra4
and others before him, holds the language at least partially responsible
for, and decries the state of, computer
science curricula; he then attempts
to use the programming language as
a lever to move curricula in a particular direction. However, the lever of the
introductory programming language
is neither long enough nor strong
enough to move or be responsible
for our curricula. Attempts to use it
as such can generate discussion, but
often more heat than light. The discussion is often embroiled in fear, uncertainty, and doubt (aka FUD) rather
than focused on more profound issues.
There are definite elements of FUD
in the arguments offered by Dewar
just as there have been by his predecessors in making similar arguments.
Whereas Dijkstra lamented “the college pretending that learning BASIC
suffices or at least helps, whereas the
teaching of BASIC should be rated as a
criminal offense: it mutilates the mind
beyond recovery” we see Dewar noting
that “It’s not impossible to teach the
fundamental principles using Java,
but it’s a difficult task.” Dewar and Dijkstra perhaps would like us to return
to the glorious days of text editors and
punch cards rather than “fancy visual
IDEs.” However, the slippery slope
of assumption that the new generation just doesn’t get it leads to the Sisyphean task of pushing the pebble of
language, be it BASIC or Java, uphill
against the landslide of boulders that
represents the reality of computer science. This is the case regardless of
whether we’re in Dijkstra’s world of
25 years ago, the world of 2009, or the
Skynet world of tomorrow—which is
probably closer than we think.
I don’t mean to suggest that Dewar and Dijkstra are arguing for the
same thing. Dewar would like computer science programs to produce
well-trained software engineers who
can build large complex reliable systems. Dijkstra excoriated software
engineering at every opportunity fixing as its charter the phrase “how to
program if you cannot.” Both miss
part of the bigger picture in the same
way that Stephen Andriole missed it in
the July 2008 Communications Point/
Counterpoint “Technology Curriculum for the Early 21st Century.” In his
1
Counterpoint, Eric Roberts points out
the flaw of “generalizing observations
derived from one part of the field to
the entire discipline.” Computer science programs must embrace a far
wider audience than software engineers building secure systems. Many
top programs are housed in schools
of Arts and Sciences rather than in
Engineering, many have chosen not
to be accredited by CSAB/ABET. Students may choose computer science
as a stepping-stone to law, medicine,
philosophy, or teaching rather than as
a foundation for becoming a programmer or software engineer.
Schools like Georgia Tech are developing innovative programs to address
the different needs of diverse audi-