Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

What are the various forms of mathematics that may be required in a computer scientist career? Say someone one day wants to prove things like P vs. NP, and meanwhile be writing advacned algorithms for various advanced programs or becoming a researcher in quantum computing and be active in the field of applied mathematics/physics.

What topics should he definitely learn in his undergraduate or postgraduate career, that may/may not be taught in his course structure as of yet, but are showing some connection that could be applicable in the future? Is pure mathematics like real analysis compulsory to learn then?Can one do with calculus?

share|improve this question

4 Answers 4

up vote 3 down vote accepted

Speaking as someone who has written enormous amounts of code, and designed many complex systems (and I think I did very good work), I have to say that no particular mathematics course was directly relevant. Not even boolean algebra.

What is relevant is the ability to think your way through a complicated problem; to know when you have solved it and when you haven't; to be eager to find simpler ways to do things.

I found that my mathematical background in general gave me a huge headstart on those things; far more than people who really hadn't learned much math. So I think learning as much math as you can and learning it well, is going to help a lot, but it may not matter exactly what math it is.

Do take plenty of computer science courses. I am entirely self-taught in it and there are still big areas I know little about (despite considerable success at whatever I am doing). I really would have liked to know more, and it is all there to be learned, but I never had the time. Grab it while you do have time.

Still the question I have most often answered is why a column of numbers that should add up to 100% adds up to 99.9999%. That will tell you something about the level of competence out there.

Another relevant thing is to get organized. If you are the kind of person who can plan everything out before you code it, you will save enormous amounts of time. One of the smartest men I ever knew said "people should think more and compute less". I didn't even understand what he meant when he said it, but over the years that has seemed more and more like revealed wisdom.

Finally, less is more in computing. I told my trainees: a beginner writes complicated code to solve simple problems; an intermediate writes complicated code to solve complicated problems. If you want to prove to me you are advanced, show me you can write simple code to solve complicated problems. Following that idea, one person revised a program from several thousand lines down to one. It's hard to have a bug in one line of code.

share|improve this answer

Analysis (real or complex) isn't likely to be that relevant to computer science. (There are complex numbers involved in quantum computing, but you could probably learn what you needed to know in your physics/engineering classes.)

You should definitely take a logic course (probably already part of your curriculum). Number theory is very helpful to know as well. I'd also recommend whatever discrete math courses you have available (graph theory, combinatorics).

share|improve this answer
    
And what about Algebra, Topology, Game theory and differential geometry? Do you need to learn analysis for these? –  Iota Oct 22 '13 at 11:59
    
Also Can you guide me out of the list of these courses pacm.princeton.edu/courses, as to what topics I should be studying. I am not enrolled at princeton, but to cover up something that may be necessary on my own. –  Iota Oct 22 '13 at 12:00
1  
If you want to gain insight into differential geometry you need to learn analysis for sure. –  Leo Oct 22 '13 at 12:24
    
@Leo Can topology be done before differential geometry ? –  Iota Oct 22 '13 at 12:38
1  
I guess it will be necessary as well. Many of the theorems in differential geometry employ concepts from topology. Open sets, special kinds of topologies and you often look at topological equivalence as well... However an understanding of analysis seems more fundamental for differential geometry. –  Leo Oct 22 '13 at 12:46

In all honesty, I think that for every subject in mathematics, there is someone who could make a good defense for it. Otherwise, it probably shouldn't exist.

I learned about analysis, orderings, and topologies and now I apply this knowledge to assist in studying more difficult problems in asymptotic analysis, and also I sometimes build sequences of problems or reductions and would like to have a notion of limit. In addition, analysis is needed if you want to understand complex concepts in Probability Theory or Machine Learning. I almost forgot to mention the applications to Geometry and Generating Functions.

I don't mean to say that you should learn analysis, but it couldn't hurt and if you like it, you could find ways of incorporating it. Off the top of my head right now, in my opinion graph theory is the most applicable area of mathematics for computer scientists.

share|improve this answer

After my answer above I realized I had assumed you were looking for a career in areas like cloud computing/commerical computing/industrial computing, etc. I had not thought about scientific computing, which I did a little of long ago. If you are interested in scientific computing the answer is entirely different.

To do anything physics based you will need heavy doses of differential equations: ODE and PDE both; as much as you can learn about numerical analysis; and a lot of linear algebra. Some of the ODE, PDE depend on concepts in real and complex analysis, so you should take courses in both of those.

Undergraduate courses in ODE, PDE are geared towards solutions which do not require numerical analysis, with just a brief nod to the numerical methods. This is all fine, and gives you some experience with diff eq's; but the fact is these methods work only for specific types of equations and tend to be inapplicable to real world problems. So a graduate level course in ODE, PDE and numerical analysis is best. That way you at least know what numerical schemes may work and which, however plausible, are doomed to failure (lack of convergence, lack of stability, etc).

The reason you need linear algebra is because numerical schemes for solving (linear) Diff Eq's lead to very large systems of linear equations. The less well conditioned the original Diff EQ is the more finely you have to take your numerical steps; and the smaller your numerical steps, the larger the resulting systems. Finding usable methods of computing solutions to these systems is an issue in itself.

The deeper knowledge of Differential Equations is very important if only because so many real world problems obstinately refuse to be linear. If you have a non-linear system of equations, you have serious problems. Trying to linearize them, or proving that inconvenient terms don't matter much and can be dropped are very difficult subjects. You can spend a lifetime on them.

You cannot know too much physics (especially if, as was my case, the problems are being presented to you by engineers who do not speak English).

On the other hand, a deep knowledge of computer science subjects, such as sorting algorithms, compiler design, etc. is not so necessary here, because you are mostly just computing, not writing the underlying software.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.