# How much mathematics and physics should a programmer know?

I am currently learning mathematics and physics along with programming. Some of it is definitely useful for my programming related projects, especially the (hobby) games that I make, but not all. What are the most important topics which are necessary for a programmer?

### 3Answer

The area of Discrete Mathematics was taught in my Computer Science degree. This has served me well over my programming career.

From that article:

Discrete mathematics includes the following topics:

- Logic - a study of reasoning
- Set theory - a study of collections of elements
- Number theory
- Combinatorics, including
- Design theory
- Enumerative combinatorics
- Graph theory

- Algorithmics - a study of methods of calculation
- Information theory
- Digital geometry
- Computability and complexity theories - dealing with theoretical and practical limitations of algorithms
- Partially ordered sets
- Proofs
- Counting and relations

There are many more spcialised areas of mathematics that would be useful depending on what sort of software you are writing.

But overall I've the topics covered in Discrete mathematics to be core background knowledge for working with any programming language, relational database, algorithm design, testing and so on.

- answered 3 years ago
- B Butts

**Mathematics**

- Discrete mathematics - the basics of computer science
- Statistics - the workhorse of data analysis and interpretation
- Linear algebra - Vector spaces, analytic geometry
- Queueing theory - The study of queues, and queueing systems (think servers)
- Numerical analysis - Eg: systems of equations, used in many algorithms for problem solving

**Physics**

- Quantum mechanics - A possible future of computing, and applicable to fiber optics

- answered 3 years ago
- G John

What I've practically used:

**Discrete mathematics**. This is a broad discipline, and Ash's answer covers things therein well. Much of this binds tightly to the fundamentals of computer science; if you're studying programming in terms of low-level theory, you'll be learning this whether you realize it or not.**Physical mechanics**. If you're going to do any sort of games programming, the application of basic laws of motion and mechanics is likely to come into play. Conceptualizing the movement and interaction of objects and forces in physical space; collision management; etc.**Matrix transformations**. This is must-have stuff if you're going to play with low-level 3D graphics. An understanding of how to work with matrices will be essential if you want to understand, rather than just use out-of-the-box, 3D graphics libraries.**Advanced geometry**. Another must if you're looking at working in graphics/games. A firm grasp of 2D geometric principles is a must if you're implementing graphics routines; familiarity with 3D space, and the concepts behind navigation and transformation thereof, is critical.

- answered 3 years ago
- B Butts

## Your Answer