# Lecture Notes

1. Probability Theory (PDF)
2. 1.1. Sample spaces and events

1.2. Conditional probability and Independence

1.3. Bayes' rule

1.4. The Inclusion-Exclusion Formula

1.5. Expectation

1.6. Variance

1.7. Chebyshev's inequality

1.8. Weak law of large numbers

3. Pigeonhole Principle (PDF)
4. Probabilistic Method - Van der Waerden's Theorem (PDF)
5. Chernoff Bounds (PDF)
6. 4.1. Preliminaries

4.2. Deviation of a sum on independent random variables

4.3. Chernoff Bound

4.4. Other versions of Chernoff Bound

7. Sequential Choice (PDF)
8. 5.1. A game

5.2. Introduction

5.3. Seeking the very best out of n possibilities

5.4. Calculating probabilities for choosing the very best on a spread-sheet

5.5. Seeking one of the top two (or top L) choices

5.6. Seeking the Best Expected Rank

9. Counting, Coding, Sampling (PDF)
10. 6.1. Some Catalan families

6.2. Coding

6.3. Random sampling

11. Generating Functions (PDF)
12. 7.1. What is a generating function?

7.2. Operations on classes and generating functions

7.3. Number of ways of giving change

7.4. Dots and Dashes

7.5. Generalized Recurrence Equations

7.6. Chord diagrams

7.7. Diagonals in Pascal's triangle

7.8. Exponential generating functions

13. Linear Programming (PDF)
14. 8.1. Basics

8.2. The Simplex Method

8.3. Linear Programming in Matrix Form

8.4. Duality

8.5. Zero-Sum Matrix Games

15. Network Flows (PDF)
16. 9.1. The maximum flow problem

9.2. Expressing as a linear program

9.3. Augmenting path algorithm

9.4. Dual

17. Sorting (PDF)
18. 10.1. The task of sorting

10.2. Some sorting algorithms

19. Median Finding (PDF)
20. 11.1. The problem of finding the median

11.2. A good strategy?

11.3. Showing the Procedure is Linear

11.4. Improving the procedure

21. Median Finding and QUICKSORT (PDF)
22. 12.1. Randomized Median Finding

12.2. QUICKSORT

23. Sorting Networks (PDF)
24. 13.1. Batcher's Algorithm

25. Modular Arithmetic and Elementary Algebra (PDF)
26. 14.1. Euclid's Algorithm

14.2. Modular Arithmetic

14.3. Groups

14.4. Subgroups and cosets

14.5. The Chinese Remainder Theorem

14.6. Fields and algebraic equations

27. Cryptography (PDF)
28. 15.1. Public Key Cryptosystems

15.2. The RSA code

15.3. Raising a Number to a High Power

15.4. Primality Testing

29. Factoring (PDF)
30. FFT (Fast Fourier Transform) (PDF)
31. 17.1. Motivation: Fourier Series

17.2. The Discrete Fourier Transform

17.3. Computing the discrete Fourier transform

17.4. Computing convolutions of sequences using Fast Fourier Transform

17.5. Fourier transforms modulo p and fast integer multiplication

32. Shannon's Noiseless Coding Theorem (PDF)
33. 18.1. Some History

18.2. Random data and compression

18.3. Shannon's entropy Theorem

34. Huffman Codes (PDF)
35. Lempel-Ziv Codes (PDF)
36. 20.1. The LZ78 Algorithm

20.2. Worst-Case Analysis

20.3. Average-Case Analysis

37. Shannon's Noisy Coding Theorem (PDF)
38. 21.1. Channel Coding

21.2. Binary symmetric channels

39. Linear Codes (PDF)
40. 22.1. Linear Error Correcting Codes

22.2. Hamming Code

22.3. Perfect Codes