CS EDUCATION IN THE U.S.:
HEADING IN THE WRONG DIRECTION?
By Robert Dewar and Owen Astrachan
Last year, Edmond Schonberg and I published an article in CrossTalk (a U.S. Department of Defense software engineering journal) titled “Computer Science Education: Where Are the Software Engineers of Tomorrow?” in which we criticized the state of computer science education in U.S. universities [ 9]. The article caused quite a mini-storm of discussion and was picked
up by Slashdot and also by Datamation in an article titled “Who Killed the Software Engineer? (Hint:
It Happened in College)” [ 6].
In our Cross Talk article, we expressed the general concern that the computer science curriculum
was being “dumbed down” at many universities, partly in an effort to bolster declining enrollments.
The enrollment decline at many universities has been dramatic, and still has not shown much sign
of recovery. The twin effects of the dot-com crash and the concern of outsourcing of IT jobs seem
to have convinced many parents and students that IT is not a field with a future, despite studies that
project a shortage of software engineers in the near future [ 5]. Perhaps the global economic melt-down will slow this cycle a bit, but I tend to agree that we will be facing a real shortage of well-trained
software engineers in the future.
So obviously the question is what do I mean by a well-trained software engineer? To me, the critical need is the knowledge required to build large complex reliable systems. It is undeniable that our
society depends in a critical manner on complex software. This is not only in the familiar areas of
safety-critical software like avionics systems, but also in everyday financial systems. For example,
consider the report from Moody stating a bug in the Moody computer system caused an incorrect
AAA rating to be assigned to $1 billion worth of “constant proportion debt obligations” [ 4]. Now I
do not know exactly what this means but it is surely one of the variety of peculiar economic instruments that have been factors in the current financial crisis: the credit ratings provided by agencies
such as Moody are a critical element.
I frequently give talks on safety- and security-critical software, and whenever I give such a talk, I
peruse the news the week before for stories on computer security failures. Prior to a talk last year, the
high-profile stories receiving the most media attention included the break-in to vice presidential
candidate Sarah Palin’s email account and the successful hacking of the Large Hadron Collider Web
site. Recently, one of my credit card companies reissued a card to me because a third-party database
had been hacked (the credit card company would not identify the database).
I often encounter CS faculty members who take it for granted that all large computer systems are
full of bugs and unreliable, and of course our experience with popular software such as Microsoft
Windows reinforces this notion. The very use of the word “virus” is annoyingly misleading because
it implies that really such infections are expected and impossible to eliminate, when in fact it is
perfectly possible to design reliable operating systems that are immune to casual attacks. Early in
This article originally appeared in the “Viewpoints” section of Communications of the ACM 52, 7,
pp. 41-45. It is reprinted here with the authors’ permission.