**Catalog Description:** Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference.

**Units:** 4.0

**Prerequisites:** Sophomore mathematical maturity, and programming experience equivalent to that gained in 3 or the Advanced Placement Computer Science A course.

**Credit Restrictions:** Students will receive no credit for Computer Science 70 after taking Mathematics 55.

**Formats:**

Fall: 3.0 hours of lecture and 2.0 hours of discussion per week

Spring: 3.0 hours of lecture and 2.0 hours of discussion per week

Summer: 6.0 hours of lecture and 4.0 hours of discussion per week

**Grading basis:** letter

**Final exam status:** Written final exam conducted during the scheduled final exam period

**Department Notes:**

Course objectives: The goal of this course is to introduce students to ideas and techniques from discrete mathematics that are widely used in Electrical Engineering and Computer Sciences. The course aims to present these ideas "in action"; each one will be geared towards a specific significant application. Thus, students will see the purpose of the techniques at the same time as learning about them.

Topics covered:

- Propositions and Proofs
- Mathematical Induction: recursion, the stable marriage problem
- Arithmetic Algorithms: gcd, simple finite fields, primality testing, the RSA cryptosystem
- Polynomials and their Applications: error-correcting codes, secret sharing
- Probability and Probabilistic Algorithms: laws of large numbers, load balancing, probabilistic constructions, conditional probability, Bayesian inference, intro to continuous probability
- Diagonalization, Self-Reference and Uncomputability

**Related Areas:**