This is a whirlwind introduction to important math that turns up everywhere in computer science. We will explore many topics. But the goal is really to learn how to reason mathematically about problems in computer science from the ground up – and how to prove statements formally when you need to.

Here is the full course outline, and here are slides for the lectures:

- Course introduction
- Proofs & problem-solving
- Induction
- Contradiction
- Invariants & monovariants
- Polynomials
- Number theory
- Combinatorics
- Graph theory I
- Linear algebra I
- Linear algebra II
- Graph theory II
- Calculus I
- Calculus II
- Calculus III
- Taylor series
- Probability I
- Probability II
- Probability III
- Linear programs I
- Linear programs II
- Sorting
- Heaps
- Graph algorithms I
- Graph algorithms II
- Graph algorithms III
- Max flow
- Binary search trees I
- Binary search trees II
- Hashing
- Dynamic programming
- Miscellaneous
- Computational complexity I
- Computational complexity II
- Neural networks I
- Neural networks II
- Neural networks III
- Final class