# Math for computer programming

I'm a computer engineering student, and I'm trying to get a firm grasp of math before starting to program. I know that math is strictly related to programming, but I don't know what is the field of math most related to programming, for example, automata theory, compatibility theory, discrete math, type theory, category theory, lambda calculus etc can you guys tell me which math field is the most related to programming and computer science?

Thank you!

• Spectral Graph Theory,Graph Theory,Number Theory, Analysis, Quantum Mechanics.
– user410845
Mar 15, 2020 at 11:38
• There is a big difference between computer programming and computer science. You can program a computer with minimal primary school level arithmetic and logic. Mar 15, 2020 at 12:08
• I used to research and develop algorithms, and graph theory was very helpful to know, and it helps to understand the object oriented paradigm a little too. Mar 15, 2020 at 12:58

Discrete mathematics (set theory, logic, combinatorics, graph theory, etc.) is probably the branch most closely associated with computer science, although calculus (esp. optimization), numerical analysis, linear algebra, number theory, statistics, and information theory are also very important in theoretical CS. As far as programming goes, I would prioritize studying algorithms and try to get a solid grasp of the basics of discrete mathematics.

Here's a good starting point for you, the bible of math for CS.

It really depends heavily on what you are programming, I would even go as far as saying that programming in general does not really require any math skills beyond the overall understanding of the language and the notion of algorithm. However, to solve certain problems, maths skills will certainly help you

• For designing algorithms and study their complexity in general, it is useful to be familiar with recursivity and induction, as well as recursive sequences. You will probably need to know how to classify the growth of sequence (the big O and small o notation)

• For running scientific computations, like simulate a physical system or a biological ecosystem, you probably need a fair bit of analysis, know about ODE, PDE. Then the most important part is probably the results proving convergence of methods for solving them

• There are also a lot of situation in which you want to apply linear algebra. I don't have examples on top of my head, but it is actually very common to compute the inverse of a matrix, or a base change. More advanced probably come up as well, even though a bit less often

• If you do some data analysis, you definitely want a solid background in statistics

• If you do machine learning, and especially neuron networks, I think you want to know at least the basics of multivariate geometry

• If you want to experiment with functional programming, then category theory will be useful, especially if you try programming in Haskell. But it is by no means required.

• If you want to understand the more theoretical aspects of computer science, and the general principles that make programming languages work in general, you probably need a bit of automata theory and formal languages, or even go till lambda-calculus and turing machines

As you can see, you don't really need to know any maths for programming, but as a programmer you will most certainly meet some maths, and even more so if you are a computer scientist in general. This list is certainly non exhaustive. My advice would be, if you want to have general knowledge in maths, to take a book of first year undergrad general and study from it, and doing the exercises. Everything you will find in there are what all mathematics rely on