Lecture Notes on Discrete Math in Computer Science


A first course on Discrete Math in Computer Science taught at Dartmouth.

  1. Jargon I: Sets
  2. Jargon II: Functions
  3. Jargon III: Propositional Logic
  4. Jargon IV: Predicate Logic
  5. Proofs: via Contradiction
  6. Proofs: Principle of Mathematical Induction
  7. Proofs: Strong Induction
  8. Proving Correctness of Programs
  9. Minimal Counterexamples: A Different Look at Induction
  10. Combinatorics: Product and Sum Principle
  11. Combinatorics: Using functions to count, Division Principle
  12. Combinatorics: The Four Fold Formula
  13. Combinatorics: Binomial Coefficients & Combinatorial Identities
  14. Probability: Basics
  15. Probability: Conditional Probability, Independence
  16. Probability: Bayes Rule
  17. Probability: Conditional Independence
  18. Probability: Random Variables and their Expectations
  19. Probability: Linearity of Expectation
  20. Probability: Variance
  21. Probability: Deviation Inequalities
  22. Graphs: Basics
  23. Graphs: Connectivity and Trees
  24. Graphs: Bipartite Graphs
  25. Graphs: Matchings and Hall's Theorem
  26. Graphs: Proof of Hall's Theorem
  27. Numbers: Modular Arithmetic
  28. Numbers: GCD and Bezout's Identity
  29. Numbers: Multiplicative Inverses
  30. Numbers: Fermat's Little Theorem
  31. Numbers: Public Key Crypto & RSA Algorithm
  32. Infinity: Countability
  33. Infinity: Uncountability, Undecidability, and the Halting Problem