Take the 2-minute tour ×

I've studied mathematics and found the subject very interesting, but after getting into programming and coding stuff, I feel like I've forgotten most of the advanced stuff that I've studied. I know some of you might find this outrageous, but in my case its the truth. Now I want to repent and make up for that mistake by re-learning, but theres just one problem I don't know where to start.

List of Topics based on answers to the current question and this Math Classes

  1. Discrete mathematics
  2. Calculus
  3. Elementary Algebra
  4. Modular Arithmetic
  5. computational number theory
share|improve this question

closed as not constructive by Yannis Rizos Feb 26 '12 at 18:13


See also programmers.stackexchange.com/questions/101/… –  ChrisF Sep 12 '10 at 17:49
@Chris thanks for the link, must've missed it.I did search for similar questions before asking. –  Vivek Bernard Sep 12 '10 at 17:54
I don't know... Calculus is really pushing it. Its a niche skill at best. –  ChaosPandion Sep 12 '10 at 18:09
@Vivek Bernard: You don't need calculus for software design or programming, unless the specific problem requires it, but then usually you should understand enough, so you can implement the algorithms designed by an actual scientist/(classical) engineer. None the less, it is a brilliant excercise for your brain. Also, every now and then I realize, that pursuing any discipline that requires abstract and (often) creative thinking helps in all such other disciplines. –  back2dos Sep 12 '10 at 18:47
Boolean logic. Does that apply? –  Will Sep 13 '10 at 11:56

10 Answers 10

up vote 10 down vote accepted

An understanding of Elementary algebra can mean the difference between writing a complex slow pile of trash and a simple efficient program.

share|improve this answer
Care to explain now? I'm not disagreeing, I'd just like to know how algebra would ever help one write a program in a language like Java or PHP. –  Mike B Sep 13 '10 at 8:43
@EnderMB it makes no difference what language your are coding in, algorithm efficiency can make all the difference. –  Chris Sep 13 '10 at 11:45
@Chris I agree, but what I'm really asking is how you would apply elementary algebra itself to your code? –  Mike B Sep 13 '10 at 11:59
Well, understanding algorithm efficiency requires a pretty good understanding of algebra. For example, function x has a runtime of n^2, function y has a runtime of n*log(n) and function z calls function x and y, what is function z run time? –  Chris Sep 13 '10 at 18:22

As an engineer at Google involved in recruitment, here are the skills I look for in candidates (by decreasing order of importance):

  1. High-school level algebra, ie being able to write a pair of nested "for" loops without off-by-ones. (You would be surprised...)
  2. Back-of-the-envelope calculations for industrial feasibility (eg how many servers to sustain so many gajillion web pages a day assuming X capacity per server)
  3. Algorithm complexity and the big-O notation
  4. Practical comp-sci type math, such as graph theory, data structures and search algorithms
  5. Domain-specific math such as machine learning, statistics, computer vision and so on. This will depend on the job description, obviously.
  6. More esoteric foundational math that computer science is rooted upon, such as computability theory, lambda-calculus and Gödel's theory. And that's extremely subjective, other interviewers will typically have a disjoint set of pet interests.

While on the topic of subjective testimony: I've found very little professional use to most of the math I learned and liked (advanced algebra, calculus), while some of the most boring stuff ever (statistics) turned out to be quite useful and I wish I had done more. Only the discrete math (group theory, combinatorics and the comp-sci stuff quoted above) netted me good bang for the bucks (or student-years — Math is cheap these days).

share|improve this answer

On top of standard high-school level math (basic algebra, elementary calculus, arithmetic, geometry etc.), I would say:

  1. Discrete Mathematics (covering sets, counting, logic, etc. and some basic topics from number theory, graph theory etc.)
  2. Basic Probability
  3. Basic Calculus
  4. Computational Geometry (not a must-do course for all I guess, but still worth every minute spent)

Note I'm only noting "math" topics. This does not include topics such as algorithm design which has some overlaps with most of the same topics (e.g. graphs, number theory, probability etc.).

share|improve this answer

I have found that various number theory topics have helped over time.

A couple examples are modular arithmetic or computational number theory.

share|improve this answer

Oh, nobody says logic math!

Statistics and probability is important too, besides disciplines already cited.

share|improve this answer

I have worked on a software that was doing Radio Network Planning. Lots of math...

  1. Basic boolean algebra

  2. Calculus - differential equations(mostly) for min/max problems

  3. Linear algebra - determinants, matrices, eigenvalues, ...

  4. Computational geometry - 2D/3D transforms (not much)

  5. Graph theory - trees, cycles

  6. Probabilities and statistics - everything - due to Erlang law...

share|improve this answer

Being able to think logically is an important still for all developers, people that have studied mathematics and done well, tent to be good logical thinkers. That is way so many people think that mathematics is needed for programming.

share|improve this answer

Ability to analyze complexity of algorithm.

share|improve this answer

Mathematics enhances your logic ability. Important subjects are algebra and calculus...and any other brain cracking subject

share|improve this answer

I haven't seen anyone mention trigonometry, perhaps because its just a given. But I've had to brush up on my trigonometry skills several times over the years, particularly when dealing with computer graphics. Also shows up in some embedded programming work.

share|improve this answer
