# Awesome List - Learning Computer Science & Maths

## Maths

**Plan/sequence to learn maths for computer science**
Tl:dr- In order; graph theory, linear algebra, number theory, and multi-criteria decision analysis. Game theory, set theory, nonlinearity, computational geometry a bonus.
Let’s say you’re learning some new algorithms. Your list might look something like the below list[1]. I’ll add in brackets the sort of math you learn about by learning the algo if you get lost down the wiki-rabbit-hole. If you want to solve other similar problems, more of that sort of math will help.

- Graph algorithms [graph theory]: Breadth first search(BFS), Depth first search(DFS), Strongly connected components(SCC), Dijkstra, Floyd-Warshall, Minimum spanning tree(MST), Topological sort.
- Dynamic programming [self-similarity, finite subdivision rules, nonlinear equations]: Standard dynamic programming problems such as Rod Cutting, Knapsack, Matrix chain multiplication etc.
- Number theory [Number Theory]: Modular arithmetic, Fermat’s theorem, Chinese remainder theorem(CRT), Euclidian method for GCD, Logarithmic Exponentiation, Sieve of Eratosthenes, Euler’s totient function.
- Greedy [goal programming, simplex algorithm, multi-criteria decision analysis]: Standard problems such as Activity selection.
- Search techniques [linear/vector algebra[2]]: Binary search, Ternary search and Meet in the middle.
- Data structures (Basic) [graph theory]: Stacks, Queues, Trees and Heaps.
- Data structures (Advanced)[more graph theory]: Trie, Segment trees, Fenwick tree or Binary indexed tree(BIT), Disjoint data structures.
- Strings [set theory]: Knuth Morris Pratt(KMP), Z algorithm, Suffix arrays/Suffix trees. These are bit advanced algorithms.
- Computational geometry [computational geometry]: Graham-Scan for convex hull, Line sweep.
- Game theory [game theory]: Basic principles of Nim game, Grundy numbers, Sprague-Grundy theorem.

** Learning Maths

- Calculus Revisited: Single Variable Calculus MIT
- Calculus Revisited: Multivariable Calculus MIT
- Complex Variables, Differential Equations, and Linear Algebra - MIT
- Linear Algebra - MIT
- Introduction to Linear Dynamical Systems -Stanford
- Probability - Harvard
- Intermediate Statistics - CMU
- Convex Optimization I - Stanford
- Math Background for ML - CMU

*** Other sequential courses for self learning