|No such thing as a small change|
Re: (OT?) Usefulness of CSby FoxtrotUniform (Prior)
|on Dec 27, 2001 at 05:35 UTC||Need Help??|
First of all, taking this at face value, I think you're comparing apples and oranges. Computing science is about creating software. Literary criticism is not about writing stories, it's about appreciating and understanding the literature that's already there.
Now, since I read this as a veiled attack on computing science, let me respond to that.
A good grasp of computing science is absolutely essential for a serious programmer. Notice that I did not say that a CS degree is essential; I'm talking about concepts and understanding, not paper credentials.
CS, as distinct from software engineering, is about the theory of making computers do exactly what you want them to. That means stuff like big-O notation, algorithmic analysis, a proper understanding of the various paradigms of programming (as opposed to: "Object oriented? You mean Java?" and suchlike), and the theory of all the "practical" aspects of programming. You can pick this stuff up from books, probably even from experience (which is how it was done originally, of course), but the easiest way of getting it is by taking a CS degree.
A programmer with a good understanding of CS will not spend hours trying to save two cycles in the inner loop of an O(n^2) sort; he will spend twenty minutes replacing the bubble sort with heapsort. For that matter, he won't spend hours trying to re-code an exponential-time algorithm as a polynomial-time algorithm if the problem is NP-hard (well, not unless the object of the exercise is to prove P=NP). A "self-taught" programmer with no grasp of CS might design and set up a database, but won't be able to normalize it, and will end up with redundant (and probably inconsistent) data. He'll write two hundred lines of procedural code to solve a problem that could be expressed in ten lines of functional code... or two lines of declarative code. And so on.
In short, I think you're full of it. Computer science is as useful for writing good software as a sense of plot, character, and eloquence is for writing a good story.
See also Why Theory Doesn't Suck.