# Which are the topics in Mathematics that a developer should absolutely know? [closed]

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
-

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

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

–  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

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

-
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

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

A couple examples are modular arithmetic or computational number theory.

-

Oh, nobody says logic math!

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

-

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.).

-

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...

-

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.

-

Ability to analyze complexity of algorithm.

-

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).

-

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

-

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.

-