That’s the question taken up by this IT Wire article. The book it’s referencing, Computer Science Reconsidered by Karl Fant, says “no”. More precisely, the book argues that “mathematics does not provide the most appropriate conceptual foundations for computer science, but, rather, that these foundations are a primary source of unnecessary complexity and confusion”. And mathematics’ inclusion at the foundation of CS is the fault of John Von Neumann and Alan Turing, who imposed their mathematical will on a subject that didn’t, and doesn’t, need it.
There’s a lively discussion of the book and its arguments at this Slashdot article. It all seems to boil down to how one defines “computer science”. The developers who tend to do end-user programming seem to agree heartily with the idea of de-mathematizing “computer science”, affirming that not once have they ever used, or needed to use, the math they were forced to learn in college. (This includes a few developers who never got their degrees because they never passed the required math classes.) The developers who tend to do lower-level tasks — kernel development, crypto, image processing, etc. — think that Fant is full of it.
The problem seems to be that “computer science” is a term that encompasses so much that it’s nearly impossible to describe a standard set of skills and foundations one needs to practice that field. Within “computer science” we have such diverse areas as software engineering, informatics, computer engineering, CGI programming, and so on — all of which have the computer as their common denominator but which otherwise have highly divergent goals and — therefore — highly different prerequisites. Computer engineers need a lot of electrical engineering and physics. Informaticists don’t; they need to know about databases and human-factors issues. The computer engineers need to know calculus, differential equations, linear algebra, and so on. The informaticists need a whole lot of statistics. Different areas of CS need math to varying degrees and in varying combinations of fields. And the variance here is so wide that the question posed in the title of this article, and the one taken up by Fant’s book, doesn’t even appear to be the right one.
The right question to me seems to be, what’s the best way to prepare people to enter a computer-centered field of study and work as professionals? How do we college people design a “computer science” curriculum? Is it indeed possible to create anything like a curriculum — a common set of core courses with different tracks — for computer science?
There used to be a time when chemistry and physics were thought of as instances of the same core field — natural science. But we don’t have students in college major in “natural science” today. The time may be upon us to start thinking the same way about the different instances of computer science and make the curricula for each instance better reflect the needs and aims of each. And tailor the quantity and type of mathematics accordingly.
Background: I’ve written about this before in reference to Georgia Tech’s quite different approach to the CS major.
Technorati Tags: Computer science