The stepchild

A new jeremiad foretelling the doom of computer science as an academic discipline has just been published by the British Computer Society. It’s by Neil McBride, principal lecturer in the School of Computing, De Montfort University, Leicester.

Some of what McBride says strikes me as breathtakingly wrong-headed:

Now vastly complex applications for businesses, for science and for leisure can be developed using sophisticated high-level tools and components. Virtual robots—Zooks—can be created by eight-year olds without needing programming, logic or discrete mathematics skills. Web designers build complex business sites, graphic designers build animations, accountants assemble business systems without needing to go object-oriented.

Computer science has lost its mystique. There is no longer a need for a vast army of computer scientists. The applications, games and databases that students once built laboriously in final year projects are bought at bookshops and newsagents.

If I understand this argument correctly, McBride is saying that computing (and in particular software development) has become so easy that there’s no longer a need for any sort of formal curriculum. Any eight-year-old can do it, or even an accountant. I wish I could believe that, but in fact I’d be inclined to argue in exactly the opposite direction: Computer science is in trouble not because all the big problems have been solved but because the problems are so hard that no one has a clue how to make any progress. In computing theory, the P = NP? question has been out there for almost 40 years, with no sign of resolution. In engineering, large software projects routinely run over budget and behind schedule. At a more personal level, maybe eight-year-olds in Leicester can conjure up virtual robots at will, but the rest of us struggle with computing environments that still seem overly complex, fragile, unreliable, inconsistent, and just plain buggy. I see no shortage of challenges for computer science.

Still, the underlying question is not to be shrugged off: Do computer science departments have a future in the university? Enrollments are down, and chairs are fretting about funding and the head count. Students, meanwhile, worry about finding a job. Those who began their education in the era of IPO frenzy have graduated into a more-somber world. (But James H. Morris and Peter Lee resist blaming it all on the boom-and-bust cycle in Silicon Valley; they point out that undergraduate enrollment peaked in 1987, and thus it was already falling long before the vulture capitalists began picking at the bones of dot-com failures.)

A few years ago, a committee formed by the National Academy of Sciencies and chaired by Mary Shaw of Carnegie Mellon University issued a spirited defense of computer science as a free-standing, independent area of research, distinct from mathematics, engineering and all other disciplines. More recently, Bernard Chazelle of Princeton University has been carrying on the campaign in a series of essays, editorials, and panel discussions. The following Q&A comes from a press release issued in advance of a panel discussion at the AAAS meeting last year:

Isn’t computer science really just a stepchild of mathematics?

As the recent breakthroughs on Fermat’s Last Theorem indicate, the field of mathematics has never been more fertile with new ideas. Mathematics is original and deep, but it does not force you to think differently. If a math giant from the past—someone like Gauss—were to come back to Earth, he would have a lot of catching up to do but he would find that math is done much the same way that it was done during his life.

Computer science, by contrast, is a new way of thinking, a new way of looking at things. For example, mathematics can’t come near to describing the complexity of human endeavors in the way that computer science can. To make a literary analogy, mathematics produces the equivalent of one-liners—equations that are pithy, insightful, brilliant. Computer science is more like a novel by Tolstoy: it is messy and infuriatingly complex. But that is exactly what makes it unique and appealing—computer algorithms are infinitely more capable of capturing nuances of complex reality in a way that pure mathematics cannot.

“Stepchild”! That one word says it all. There’s a whole Tolstoyan novel in it, or maybe a Henry James, or at least a Grimm Brothers fairy tale. Computer science is the poor relation, the orphan, the foundling—taken in by a grand family but never taken seriously, never allowed to forget its doubtful origins. Or else computer science is the arriviste, the rich American cousin with too much cash and too little taste, who tears down the mossy old manse and puts up a spiffy new house designed by Frank Gehry. Or do we have a tale of sibling rivalry—the two children with different visions of the future for the family firm, neither of whom can ever feel secure in the love of a cold and distant parent?

I don’t know how this tear-jerker will end. Without sectarian violence, I hope. In a sense it’s none of my business, since I’m not a member of either department. But I do have to say that the idea of being asked to choose between mathematics and computer science is preposterous. If I were pleading this case, I would emphasize the connections between those fields, not the distinctions.

This entry was posted in computing.

5 Responses to The stepchild

  1. Derek says:

    Maybe I’m repeating an urban legend, but wasn’t COBOL designed with an english-like syntax so that business managers would be able to read and write code (thus cutting out the costly programmers)?

    Also, I’ll believe that “the masses” will be able to develop software when they know the difference between OR and XOR. E.g., to the average person, the question “would you like an orange or an apple” has two (maybe three) answers. To the computer scientist, there are four answers.

  2. David Eisner says:

    Virtual robots—Zooks—can be created by eight-year olds without needing programming, logic or discrete mathematics skills.

    This kind of argument reminds me of something Joel Spolsky recently commented upon in a blog entry titled Lego Programming. Excerpt:

    BusinessWeek ran a cover-story about object oriented programming way back in September, 1991, accompanied by a picture of a baby in diapers programming a computer. They also used the Lego metaphor: “Indeed, at the software startup they now head, Objective Technologies Inc., programming seems downright juvenile: Instead of mucking around in tangles of C code—writing arcane statements such as printf (“%s/n”, curr str)—they mainly connect boxes on the screens of their NeXT Computer Inc. workstations and fill in blanks. In minutes, they have industrial-strength programs that run right the first time and that can be modified without brain surgery. Says Bergerson, 27: ‘I showed my mother, and she said, “You’re still playing with Lego blocks, like when you were a kid!”’”

  3. Alex says:

    Stroustrup explains it well:

    Computer programming still suffers from many serious problems and is far from being mastered even by expert programmers.

    The main problem as I see it is caused by those brave folks (and their supporters) who figure out MS Access and VBA and believe they can build production systems. It’s kinda like setting out to build your next home based on the experience of successfully building a doghouse.

  4. nutbearer says:

    “Also, I’ll believe that “the masses” will be able to develop software when they know the difference between OR and XOR. E.g., to the average person, the question “would you like an orange or an apple” has two (maybe three) answers. To the computer scientist, there are four answers.”

    As a corollary, the average computer scientist will get laid when they realize that natural language does not use logical connectives, and pretending that it does makes them look silly rather than clever.

  5. Karthi says:

    I am not from computer science or math department. But I find there are plenty of things need to accomplished in computer science.

    The whole challenge is in providing a framework which eight year kid can use and produce Virtual robots! Just from programming point of view it is difficult to make things simple enough.