I know this might be a personal problem, but I often find some friends in the same problem as me so I think this might be helpful to them after all. I am going to graduate in Computer Science in december, but I still don't feel comfortable enough with mathematics. After trying to read lots of mathematical books, for instance, Markov Processes, Statistics and Artificial Intelligence, I realized I am very deficient when it comes to understanding more elaborated and advanced formulas (or even simple ones) and find it really annoying and hard to make things flow. I usually have interesting adeas with abstract algorithms (like Particle Filters) but when I get to the implementation phase, I struggle to understand simple things involving mathematics.

So, I am really looking forward to improve my knownledge and was thinking about taking an undergraduate course in Mathematics. But, after looking at some curriculum, there seems to be lots of things that maybe is not usefull to me at this time, though I would really enjoy learning. I am currently very interested in Computer Vision, but again find lots of mathematics in image processing and I feel dummy using certain libraries such as OpenCV that does a lot to me but I can't understand what they are doing.

So my question is, would it be more profitable to do some graduation in Mathematics or should I study by myself? What should I look for in Mathematics curriculums? Would it be possible to study Mathematics by myself and improve it to the level where I can understand advanced concepts?

Thank you!

ps1: During my graduation, I studied (because this year is going to be mostly on the final project and technology related) these subjects:

  • Mathematics Foundations for Computer Science
  • Linear Algebra
  • Statistics
  • Quantitative Research
  • Image Processing (basics, mostly on 2D, 3D OpenGL)

ps2: I have been working as a programmer just for financial reasons (though I find it really interesting to develop code in more architectural layers), but I look forward to use programming as a tool for research and science as soon I am capable of doing it.

  • 4
    $\begingroup$ You could start with "Concrete Mathematics: A Foundation for Computer Science", by Graham, Knuth, and Patashnik. I'm no computer scientist, but I think it's valuable in either field to have a good grasp of the other field. I would at least sit in on a class or two, and a discrete math class would be a good one for basics. Can you tell us what math classes you have taken? $\endgroup$
    – GeoffDS
    Jan 30, 2012 at 16:04
  • 2
    $\begingroup$ I absolutely second "It's valuable in either field to have a good grasp of the other field." $\endgroup$ Jan 30, 2012 at 16:46
  • 2
    $\begingroup$ What do you want to do once you graduate? Work as a programmer, or work as a scientist who uses programming? $\endgroup$
    – Mr. Boy
    Jan 30, 2012 at 17:22
  • $\begingroup$ @John I added in ps2 note. $\endgroup$
    – IHawk
    Jan 30, 2012 at 17:29
  • 1
    $\begingroup$ A complex question! In a North American context, which is the only one I am reasonably familiar with, I would discourage getting two undergraduate degrees. Too much time, too many requirements. After the undergraduate degree, one should ideally move on, perhaps to graduate school, perhaps not. There may be specific mathematics courses one wants to take, but the vast majority of courses you are asked to take for an undergraduate degree will not be focused enough for your needs. $\endgroup$ Jan 30, 2012 at 18:37

2 Answers 2


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.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .