Think of a graphic engine for a video game. If the first thing that comes to your minde is it's difficult, you're not alone. It's difficult because the mathematics structures and theories behind it are not general knowledge: they are a specific algebra topics which many of us do not master. Otherwise, if you see a !($a or $b) statement probably you know how to write an equivalent form.
So how can you learn all this stuff?
The programming field is broader than ever, and there are more and more mathematics instruments used in computing. A modern programmer should be a jack-of-all-trades in his mathematical side, as he should learn the majority of the specific disciplines as needed by his profession, while mastering the foundations which he encounters every day.
I have made a breakdown of the main arguments taught in high school and university which are utilized in computer science. I divided this list in a basic section and specific applications one.
- Set theory and relations: used in the relational model without most people knowing, and also as terminology in modern languages (List vs. Set).
- Functions: there is a resemblance in mathematical functions and programming ones. Functional programming is an approach coherent and taken to the extreme. The lack of side effects is another strong similarity.
- First order logic: De Morgan laws are a powerful example of refactoring applied to if statements. A strong foundation for something you will write forever: conditional expressions.
- Differential and integral calculus (in one variable): they are general knowledge. Handy when dealing with disparate problems, for example maximums and minimums of an expression.
- Enumerative combinatorics: scary name for permutations and combinations. Counting items is a recurring task.
- Computational complexity: to know when an algorithm performs better than another.
- Trigonometry: you can take advantage of trigonometric functions while solving geometric and 2d graphics problems.
- Analytic geometry and linear algebra: a fundamental in 3d graphics. Rotating an object involves matrix multiplications.
- Abstract algebra: groups, rings, fields and so on. These are structures which are used to solve very specific problems. For instance, you can solve the Rubik's Cube with enough group theory.
- Vector and multivariable calculus: also useful in anything that involves manipulation or simulation of physical objects. The law of physics you want to simulate are formulated in these terms. Though, these are engineering concepts instead of general computer science ones.
- Statistic and probability theory: the world is not deterministic and some models should take into account natural variability of the data they act upon.
- Complex numbers: probably useful only if you are treating signals and dynamic systems.
- Financial mathematics: interests and present values are not a simple topic as they can seem.