There is a curious dilemma in universities today with regard to the field of computer science. Historically, computer science was part of the mathematics department. Many of the foundational concepts of computers—boolean logic, algorithms, formal systems, functions, lambda calculus—these were all purely theoretical concepts residing squarely inside the math department before computers came along. Furthermore, the earliest computers were primarily used for mathemetical calculations (that’s why they’re called computers, after all—a term which previously was reserved for humans who crunched numbers for a living), either by mathematicians or physicists. So it was only natural that, as computers became part of the modern university, classes on computer theory would be part of the math department.
Since those early years, computers have become so popular and such a force of their own that most universities have a separate “computer science” department (although typically still conjoined with the mathematics department in some way). As computers have matured, non-mathematical uses of them have grown increasingly common. The art of programming, with its roots in pure mathematics, looks much less like mere formulas and equations than it once did. And, finally, those who are majoring in computer science these days typically go on to be software developers—not theoretical mathematicians. As a result of all these factors, the face of computer science departments has changed radically.
Many people lament the passing of the traditional “computer science” discipline, full of mathematicians (not programmers) and rich with theory and symbols (not software development models). Where is the computer science of Knuth, or Dijkstra, who allegedly said, “Computer science is no more about computers than astronomy is about telescopes”? Has it died, pushed out of our universities in the increasing trend towards university-as-trade-school?
I don’t think so. In many ways, the discipline of the early computer science pioneers has been sucked wholly back into the math department. Many of the same mathematical concepts present in those early computers are still heavily studied and examined in the math department, with computers as a useful resource, not the focus—just like computer science once was. It’s just not called “computer science” any more.
Unfortunately, I think a result of this paradigm shift is that the brilliant mathematicians are ceasing to have as strong an effect on the software development world as they once did. There’s not as much cross-culture as there was when the two disciplines were more closely interrelated.
Another problem is that, after traditional computer science was reabsorbed by the math department, nobody has been able to agree on what the “new” computer science discipline should be. The mixed nature of a typical computer science department faculty—made up of both “old-school” theory-heavy, math-heavy powerhouses as well as people with years of real-world software development experience from industry—just exacerbates the problem.
Some believe that the department should prepare its students for jobs in software development, since that’s where a significant percentage of them end up. Others think that the department should focus on theory, and that development-centric classes belong in trade schools, or at least a different department. As Joel Spolsky (author of several books on software development) puts it in characteristically tongue-in-cheek fashion:
[E]lite schools think that teaching practical skills is better left to the technical-vocational institutes and the prison rehabilitation programs. You can learn mere programming anywhere. We are Yale University, and we Mold Future World Leaders. You think your $160,000 tuition entititles you to learn about while loops? What do you think this is, some fly-by-night Java seminar at the Airport Marriott? Pshaw.
So universities are typically stuck in this middle-world of half mathematics, half software development. Students who want the former struggle through the programming-heavy classes of computer architecture and compilers, while those who are interested in the latter have to wade through theory-heavy classes like automata theory and “database” classes that have very little real-world utility.
So what do I think should happen? I think there should be a theory-centric track fully inside the math department, and a development-centric track (perhaps called “software engineering”, as many universities are leaning towards) full of programming-heavy courses on software design, development methodologies, and code maintenance. The development-centric track shouldn’t be simply “learn how to program” nor “learn what development tools are popular today”—I do agree that such tasks should be left to trade schools and the like. But there’s a lot of university-appropriate knowledge that has been applicable for decades and will be applicable for decades to come that is specific to software development.
I believe this is the world we’re heading towards, but as always, the transition period will be one messy, bumpy ride.
Entries (RSS)
March 26th, 2007 at 3:44 am
As odd as it might be to hear this, it’s nice to see that English isn’t the only department with these sorts of problems, and that the whole university system is feeling the “be useful and make things we can sell” push.
The problem is similar: in the department, we have people who study literature (and are thus armed with a lot of abstruse cultural and literary theory) and the people who create literature (and are thus armed with, er, so far as I can tell, pens). In addition, there’s a major trend toward separation, putting the writers in one section and the theorists into a melange of “cultural studies.” While I support interdisciplinary education—indeed, one of the best courses I took was team-taught by scientists, cultural theorists, historians and literary critics—the point was cross-pollination; the departments remained discreet, and what you were studying was added to by the intercession of these new voices. Making “interdisciplinary” the norm will set up new boundaries, similar to those you described between mathematics and programmers, that are no better than the “isolated department” scheme of the 1950’s.
March 26th, 2007 at 5:47 am
Literature departments–perhaps the best example of the aphorism “Them as can’t do, teach.”
