- Online Resources:
- partI: Proofs
- Chapter1: Propositions
- Chapter2: Patterns of proof
- Chapter3: Induction
- Chapter4: Number theory
- partII: Structures
- Chapter5: Graph theory
- Chapter6: Directed graphs
- Chapter7: Relations and partial orders
- Chapter8: State machines
- partIII: Counting
- Chapter9: Sums and asymptotics
- Chapter10: Recurrences
- Chapter11: Cardinality rules
- Chapter12: Generating functions
- Chapter13: Infinite sets
- partIV: Probability
- Chapter14: Events and probability spaces
- Chapter15: Conditional probability
- Chapter16: Independence
- Chapter17: Random variables and distributions
- Chapter18: Expectation
- Chapter19: Deviations
- Chapter20: Random walks
- Coursera - Introduction to Logic,
- Coursera - Linear and Discrete Optimization,
- Coursera - Probabilistic Graphical Models,
- Coursera - Game Theory.
-
Notes:
- Learn about fundamental data types (stack, queues, and bags),
- sorting algorithms (quicksort, mergesort, heapsort),
- data structures (binary search trees, red-black trees, hash tables),
- Big O.
-
Online Resources:
- MIT Introduction to Algorithms,
- Coursera - Introduction to Algorithms Part 1 & Part 2,
- Wikipedia - List of Algorithms,
- Wikipedia - List of Data Structures,
- Book: The Algorithm Design Manual
- Book: Effective Java.
-
Online Resources:
-
Calculus 1 - Ohio State University
-
Pre-Calculus Courses - Universitat Autonoma de Barcelona
-
Calculus for Beginners and Artists - MIT
- Statistics & Probability
-
RNG, Advanced Placement — stattrek.com
-
Basics:
- LCM and GCD
- (Extended) Euclidean algorithm
- Modular arithmetic (addition, subtraction, multiplication)
- Modular multiplicative inverse ("division") - Existence and computation
- (Fast) Prime list generation
- Fast prime factorization (with/without pre-process)
- Exponentiation by squaring (e.g., computation of xn, An for square matrix A, and so on)
-
Intermediate:
- Solving systems of linear modular congruences - Chinese Remainder Theorem
- Solving linear recurrences by fast exponentiation of matrices (e.g., Fibonacci Sequence)
- Euler's phi function and fast computations
- Miller–Rabin primality test
-
Advanced:
- Primitive root modulo N
- Discrete logarithm
- Discrete square root
- Multiplicative function and Möbius inversion Formula
- Farey sequence and applications
Quite often, a single problem will require some of the following items together with Number Theory knowledge, so that you can solve it:
- Dynamic Programming
- (Basic) Enumerative Combinatorics: nCr and nPr
- Lucas' Theorem
- Inclusion-exclusion principle
- Probability
- Online Resources:
- Online Resources:
- Stanford University - Introduction to Robotics,
- Stanford University - Natural Language Processing,
- Stanford University - Machine Learning
- Online Resources:
- Coursera - Compilers
- Online Resources:
- Coursera - Cryptography,
- Udacity - Applied Cryptography
- Online Resources:
- Coursera - Heterogeneous Parallel Programming
- Work on project outside of the classroom.
- Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.
- Work on project with other programmers.