Discrete Mathematics for CS
CS70 is a course about on ”Discrete Mathematics for Computer Scientists”. The purpose of the course is to
teach you about:
Fundamental ideas in computer science:
- Boolean logic.
- Uncomputability and the halting problem.
- Modular arithmetic, Error-correcting codes, secret sharing protocols
- Graphs: paths, cuts, hypercubes.
Many of these concepts underly all the more advanced courses in computer science.
Precise, reliable, powerful thinking:
- Proofs of correctness. These are essential to analyzing algorithms and programs.
- Induction and recursion.
- Probability theory.
Problem solving skills:
- These are emphasized in the discussion sections and homeworks.
Course outline (abbreviated).
• Propositions, Propositional logic and Proofs
• Mathematical Induction, recursion
• The stable marriage problem
• Modular arithmetic, the RSA cryptosystem
• Polynomials over finite fields and their Applications: error-correcting codes, secret sharing
• Graphs: Eulerian paths, hypercubes.
• Diagonalization, Self-Reference, and Uncomputability
• Probability and Probabilistic Algorithms: load balancing, hashing, expectation, variance, Chebyshev
and Chernoff bounds, conditional probability, Bayesian inference, law of large numbers, power laws.
CS 70, Fall 2006, Lecture 1