I have less than 6 months to learn mathematics for my Master course in CS. (With no prior formal education in any computer/mathematics related area.) So I need to prepare my self to be tested on math as it relates to computer science.

As I found in Wikipedia, mathematics has many branches. Which ones are the most important for a programmer?

@ChrisF I think those are different. This question is pretty specific -- the guy needs to pass an exam of some sort and wants to know what parts he should study. I don't think we're particularly capable of accurately answering that without knowing what the requirements are, but that's a different story.
–
Anna Lear♦Apr 19 '11 at 21:06

@Anna - fair enough, they were just the first three that came up and were meant to be presented more for information than suggesting duplicates. Maybe I need to be clearer than just "see".
–
ChrisF♦Apr 19 '11 at 21:20

Since you have less than six months to prepare, you have to be very focused. Everything on your list is useful in some branch of computer science, but just getting an introduction to all of them would take years. Rather than ask people who don't even know what school you are going to attend, you should immediately contact your department and find out what they expect you to know. If they are like most departments they can even provide sample tests and suggested texts.
–
Charles E. GrantApr 20 '11 at 8:06

8 Answers
8

In my Computer Science degree many moons ago, Discrete Mathematics was a required course taught out of the Computer Science department itself. The resulting math minor was just an artifact of the origins of the Computer Science department at my University.

All of them, some are just more dependent of what your tasks are. Logic, Algebra, Set Theory, Graph Theory, Computation and Statistics are unavoidable in my opinion, but all the others applicable depending on what you're working on.

For example, you'll need linear algebra, geometry and maybe calculus if you do some heavy physics/3d stuff. Or Probability and Numerical analysis if you do some heavy data analysis stuff.

I don't see why you need physics, linear algebra and calculus. Unless you are going into a proof heavy cs class and need 'mathematical maturity'. The absolute necessary prerequisites are probably discrete math and probability, the rest is just fluff to make your teacher's job easier.
–
davidk01Apr 19 '11 at 21:41

@Davidk01- The OP said he needs to prepare himself in mathematics for a CS course. So he needs not just whats useful in practice, but theory as well.
–
P.Brian.MackeyApr 19 '11 at 22:03

The OP also said he has only six months and absolutely no prior formal training in math/cs. The stuff you've listed takes a minimum of 2 years to learn.
–
davidk01Apr 20 '11 at 0:25

Personally I think math is good brain training, and I wouldn't really discourage any of these. But also I think some of these are particular to a given field, where it would be helpful to understand the math if you were programming for that field, but not for programming, in general.

Topics that are good in general for CS:

Abstract Algebra

Discrete Mathematics which generally includes:

set theory

logic

combinatorics

Graph theory

Control theory

For that, you'll need:

Arithmetic

Algebra (elementary)

For some UI work it's useful to know

Geometry (Algebraic geometry)

Game Theory - tells you a lot about ways humans may make decisions.

Many of the others are useful in particular fields but are not one size fits all in terms of usefulness.

To write non-mathematical software the amount of university level mathematics that you need is fairly minimal, to do a degree in CS, you probably want need CS style maths rather than maths maths; of the list you give:

Arithmetic [being able to do basic sums and solve basic equations is very useful; modular arithmetic is also very useful]

Algebra [linear algebra, things like simultaneous equations is useful, as are finding minima and maxima, but in general you would use a library for this, so just having an understanding of its existence is enough]

Geometry [basic euclidean geometry is useful because we live in the real world, everything else is a waste of time]

Calculus [again basic calculus is useful, but knowing how to do analysis is a total waste of time]

Set theory [the basics again are useful, knowing what a set is, an intersection, a union... but anything more advanced is a waste of time]

Logic [again understanding the basics like how to read and write and and or and not statements in compounds and how to manipulate those statements, not much else (knowing the proof to Goedel's third incompleteness theorem is useless)]

Category theory [totally useless]

Number theory [elementary number theory is useful, but again, just the basics]

Combinatorics [very useful, many real world problems are combinatorical - I think of combinatorics as "raw problem solving skills"]

This conversation has veered off track so I'm removing all my comments. My original point was about your classification of certain subjects as useless. I'm not here to discuss the merits and uses of categorical language.
–
davidk01Apr 19 '11 at 22:07

Agreed, please feel free to edit the ones you think it is appropriate to, you seem to know a lot about the subject.
–
user23157Apr 19 '11 at 22:15

So much prejudice in just one post! Abstract algebra is among the most useful things a programmer must comprehend - after all, all the code is made of algebraic constructs. Topology is useful for the very same reason. Category theory is at least somewhat useful - without it you'd reinvent monads over and over again. Number theory is a base for cryptography - everyone should know at least some bits of it. Set theory and logic are the most fundamental base for everything else - you can't avoid learning them. And I haven't seen an algorithmic information theory mentioned - it is a must.
–
SK-logicApr 20 '11 at 12:59

I'd also suggest looking into which textbooks does that class use and what parts of Math are used as there are numerous components where Math and CS intersect like Boolean Algebra, Big-O notation, Symbolic Computation, and Numerical Analysis to name just a few such areas.

I know that many computer science degrees require calculus, but from what I've heard, you can get by without it with other similar math courses. Friends with CS degrees have taken courses like Algebra (a requirement from pretty much ALL degrees), Statistics, Discrete Math (which is a huge requirement for CS majors), and Graph Theory.

Here are the requirements for a CS degree from the University of Texas @ El Paso. I cannot comment as to how their program compares to average CS programs, this just what came up on the ole' Google when searching for CS degree requirements: