9
$\begingroup$

I'm a self-taught professional programmer. I am pretty good at it (Ruby, Unix, Clojure, Java, Objective-C), but now I'm thinking of taking it to the next level by maybe applying for a masters or PhD program in CS. What topics in math should I study to prepare for this goal?

$\endgroup$
10
$\begingroup$

There is a course at MIT OCW called Mathematics for Computer Science, it lists some topics you MUST cover.

Learning some Abstract algebra will be a big plus. Because I see too many references to group theory in literature.

$\endgroup$
  • 3
    $\begingroup$ dang. forgot abstract algebra in my answer - good call. $\endgroup$ – Suresh Venkat Mar 7 '11 at 17:17
  • 1
    $\begingroup$ The Fall 2005 version linked above is missing about 1/3 of the lecture notes. The Spring 2005 and Spring 2010 versions have more complete notes. $\endgroup$ – Daniel Apon Aug 5 '12 at 15:06
13
$\begingroup$

A generally high degree of mathematical maturity makes a lot of the formal aspects of (not necessarily theoretical) computer science much easier to understand. So doing a minor in mathematics along with your major in computer science would do more good than harm.

$\endgroup$
11
$\begingroup$

Linear algebra, probability theory, some graph theory/combinatorics at a bare minimum.

$\endgroup$
7
$\begingroup$

Some things you may need, some more, some less:

  • Mathematical Logic
  • Probability Theory / Combinatorics / Statistics
  • Linear Algebra
  • Calculus
  • Graph Theory
  • Set Theory
  • Number Theory
  • Maybe some optimization theory

Of course (almost) anything will be useful, especially if you are going into theoretical computer science fields.

$\endgroup$
4
$\begingroup$

All of the other answers +...

Arguably the most useful thing for you to try and do is engage in research. Following stackexchange, reading some background material/papers and figuring out what you might find interesting might be the most effective way to prepare yourself to grad school.

$\endgroup$
2
$\begingroup$

excellent/wide responses so far. I suggest some classes not mentioned so far. esp classes that lean toward application of the theory & require the student to write/debug code & visualize [graph results] as part of assignments. or build/debug working systems. etc.

  • differential equations. esp the relationship between it & discrete differential equations eg generating functions.
  • numerical methods. optimization. Runge Kutta diffeq solver etc. a neat/highly educational exercise is to solve/graph the Lorentz weather equation. concepts about precision/accuracy in software arithmetic etc.
  • there is an MIT class "modelling and simulation of dynamical systems". something similar would not be available at all universities but maybe some will have it.
  • some universities will have principles/dynamics of complex systems or complex adaptive systems etc
  • anything related to modelling or simulation of systems using software with a mathematical focus
  • fractal systems & mathematics
  • machine learning (esp with gradient descent techniques)
  • quantum computing (some classes in this are highly or mostly mathematical)
$\endgroup$
1
$\begingroup$

Great question. I just recently passed the PhD qualifying exam that was in part an entrance exam - mix of undergraduate and graduate topics.

To be practical - it depends on the school you are planning to attend, type of entrance exam they might require and type of the program they offer.

Some require GRE, so preparing to enroll is not CS specific. Some require GRE subject, which is equivalent to 5-6 core CS undergraduate courses and theory will be covered (automata theory, discrete math, etc)

To get the most fundamental background I would take Discrete Math, Algorithms and Theory of Computation from Ad Uni.

There are other fantastic sources from MIT and Stanford but these three courses, presented by great Shai Simonson are excellent foundation.

Hope this helps.

$\endgroup$
1
$\begingroup$

i really support the answers above. I can add the following that may be useful for the big picture of math in CS:

Math can be part of the goal itself; algorithm analysis, complexity bounds, deterministic or probabilistic proofs, parallel algorithms and many more research areas related to time and space of computation.

On the other side, math can be the actual path for a higher level goal; PDEs, light equations for computer graphics, the whole research area of computational physics (dynamical systems, statistical mechanics, galaxy formation) to name some of them.

Under the right circumstances, both forms of math could live together.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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