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