Is Mathematics graduation important for a Computer Scientist?

I have studied both CS and Math (I have written two MSc theses) and I can really capitalize on that. Still, I work in academia where the approach is much different. As a regular programmer you wouldn't need much math, but that also constraints areas you can work in. For example you don't need any calculus or differential geometry to use OpenGL, however if you would want to create your own image filters (not just use black-boxes), maybe do some audio-processing or physics, math is essential. What's more, from my perspective, all interesting problems involve math to some degree (on the other hand, from my perspective those wouldn't be interesting if it weren't for that math...).

Concluding first paragraph, I urge you to study math. The thing to decide is how you are going to do it: at the university or by yourself. The second option is available only if you are motivated enough, the first one is constrained by the time you have. It is more feasible for you to study by yourself if you want to learn just one domain that you like, however, probability that you will need more that one (e.g. calculus and probability theory, or differential equations and numerical methods, etc.) is huge, and then going to campus is recommended.

Whatever you do, please look for courses/books that deal mostly with applied math, as a computer scientist you more often use math that invent new theorems. About the curriculum -- it varies so greatly that I can't be of any help here, the only thing I can say, that nowadays probability theory (not just statistics) is present almost everywhere, and the calculus is sure second to follow (if not first).

(Please note that this only my opinion that is based on info from my friends (they may be numerous, but certainly this is not a representative sample). I do not have any real statistics to tell. To those that think I am skewed for my field: I deal with abstract algebra, graph theory and logic.)


The lecture notes for 6.042j at MIT are a good overview of the mathematics you'd need. For algorithms, I'd recommend Cormen et al's encyclopaedia "Introduction to algorithms", for advanced analysis techniques Sedgewick and Flajolet's "An Introduction to the Analysis of Algorithms". For everything else, just get help on the specific topic that bothers you, trying to learn "in advance" makes you lack motivation and focus; and by the time you need it, you'll have forgotten (or new techniques are in use). Lecture notes are often on the 'net, with detailed solutions to exams and homework to work through.

On an even softer note, Bentley's "Programming pearls", Kernighan and Pike's "The practice of programming" and Kernighan and Plaugher's "The elements of programming style", and perhaps Bentley's "Writing efficient programs" (the last two sadly out of print) should be on the "read at least once a year" list of every computer scientist/programmer.