**Announcements:**

**Instructor:** Gregory Valiant (Office hours: Monday 4-5:30pm, Gates 470. Contact info: send email to my last name at stanford dot edu)

**Teaching Assistants:**

Ray Li (rayyli@stanford), Shashwat Silas (silas@stanford), Shivam Garg (shivam13@stanford)

**Office Hours:**

Greg: Monday 4-5:30pm, Gates 470

Ray: Friday 10:30-noon, Gates B26

Shashwat: Monday 9:00-10:30am, Huang Basement

Shivam: Monday 10:30-11:30, Huang Basement, and remote student dial-in Tuesdays, 10-10:30am

**Class Time/location:** 1:30-2:50 Mon/Wed. Location: Thornton Center, 110 (starting Monday, 9/30).

**Course description:**
Randomness pervades the natural processes around us, from the formation of networks, to genetic recombination, to quantum physics. Randomness is also a powerful tool that can be leveraged to create algorithms and data structures which, in many cases, are more efficient and simpler than their deterministic counterparts. This course covers the key tools of probabilistic analysis, and applications of these tools to understand the behaviors of random processes and algorithms. Emphasis is on theoretical foundations, though we will apply this theory broadly, discussing applications in machine learning and data analysis, networking, and systems.

**Topics:** Markov and Chebyshev inequalities, Chernoff bounds, random graphs, and expanders, moment generating functions, metric embeddings, the probabilistic method, Lovasz Local Lemma, Markov chains and random walks, MCMC, martingales, stopping times, Azuma-Hoeffding inequality, and many powerful and elegant randomized algorithms whose analyses rely on the above tools.

**Prerequisites:** CS 161 and STAT 116, or equivalents and instructor consent.

**Grading:** 65% problem sets, 35% in-class exam.

**Problem Set Policies:** Late problem sets will not be accepted, though your TWO lowest problem set scores will be dropped. We strongly encourage using LaTex to typeset your problem sets, and have a LaTex *template* that you may use. We will be using the *Gradescope* online submission system. You should receive an email saying that you've been enrolled in CS265/CME309 from Gradescope. If not, create an account on Gradescope using your Stanford ID and join CS265/CME309 using entry code **92EK55**.

You are encouraged to find a partner, and hand in 1 problem set with both names. As always, collaboration and discussion of the problems is encouraged, though you must understand everything that you hand in, and the writeup that your partner and you hand in must be your own group's writing.

**Schedule:**

** Week 1 (9/23, 9/25):** Introduction, models of computation, randomized polynomial identity testing algorithm (Schwartz-Zippel), Karger's randomized min-cut algorithm.

Lecture notes *Lecture 1.* Models of randomized computation, and the Schwartz-Zippel randomized polynomial identity test.

Lecture notes *Lecture 2.* Karger's randomized min-cut algorithm, and analysis of Quicksort with random pivots.

** Week 2 (9/30, 10/2):** Randomized Primality Testing. This is what originally put randomized algorithms on the map back in the late 1970's, and modern cryptography as we know it would not be possible without the existence of fast randomized primality checking algorithms. We also discussed some non-crypto applications of the ability to efficiently choose random prime numbers, including succinct "fingerprints".

Lecture notes for this week: *Lecture 3 and 4 Notes (combined).* [These will be updated after Wednesday's class to include Lecture 4 material.]

** Week 3 (10/7, 10/9):** Markov's inequality, Chebyshev's inequality, moment generating functions and Chernoff bounds. Randomized routing.

Lecture notes *Lecture 5.* Markov's and Chebyshev's inequalities, and sampling-based median algorithm.

Lecture notes *Lecture 6.* Moment-generating functions, Chernoff bounds, and randomized routing on the hypercube.

** Week 4 (10/14, 10/16):** Balls in bins, the "Poissonization" technique, "power of two choices". Metric embeddings.

Lecture notes *Lecture 7.* Balls in bins, the "Poissonization" technique, "power of two choices".

Lecture notes *Lecture 8.* Introduction to Metric Embeddings, and Bourgain's low-distortion randomized embedding of any finite metric into L1.

** Week 5 (10/21, 10/23):** Metric embeddings continued, and one lecture on the "probabilistic method".

Lecture notes *Lecture 9*: Johnson-Lindenstrauss dimension reduction, and introduction to nearest neighbor search.

Lecture notes *Lecture 10.* The Probabilistic Method: bounding Ramsey numbers, derandomization via conditional expectations.

** Week 6 (10/28, 10/30):**Second-Moment Method and Lovasz Local Lemma (and algorithmic version), with applications.

Lecture notes *Lecture 11*: Probabilistic Method Continued: Second-moment method and the Lovasz Local Lemma (leveraging local dependencies to avoid the union bound)!

Lecture notes *Lecture 12*: Moser's ``Entropic Proof'' of the Constructive/Algorithmic Lovasz Local Lemma.

** Week 7 (11/4, 11/6):**Intro to Markov Chains, Mixing Times.

Lecture notes *Lecture 13*: Introduction to Markov chains, and a randomized algorithm for 2-SAT.

Lecture notes *Lecture 14*: The Fundamental Theorem of Markov Chains, and stationary distributions.

** Week 8 (11/11, 11/13):**Strong Stationary Times, and Coupling. Martingales, stopping times.

Lecture notes *Lecture 15*: Mixing Times, Strong Stationary Times, and Coupling

Lecture notes *Lecture 16*: Martingales, the Doob martingale, and Azuma-Hoeffding tail bounds.

** Week 9 (11/18):**The Martingale Stopping Theorem, and applications.

Lecture notes *Lecture 17*: The Martingale Stopping Theorem (aka the Optional Stopping Theorem), and applications.

** 11/20: In-class Exam (in place of formal final exam)**

** Week 10 (12/2, 12/4):**Expander codes, and final lecture on current research threads.

Lecture 18: Expander Codes. We'll spend the first half discussing expander graphs (sparse graphs that behave like dense ones in the sense that they are well-connected), and the second half discussing how to use expander graphs to make good error-correcting codes.

Lecture 19: This final lecture talked about some recent research of my students and me that builds on some of the things we saw in class. *Slides here*.