CIS 677: Randomized Algorithms
#
CIS 677 (Fall 2020)

Randomized Algorithms

**Instructor:** Sanjeev Khanna (Rm 457C, 3401 Walnut)

**Lectures:** Wednesdays 2-5 pm.

### Course Overview

Can you check if two large documents are identical by examining a small number of bits? Can you verify that a program has correctly computed a function without ever computing the function? Can students compute the average score on an exam without ever revealing their scores to each other? Can you be convinced of the correctness of an assertion without seeing the entire proof? The answer to all these questions is in the affirmative provided we allow the use of randomization.

Over the past few decades, randomization has emerged as a powerful resource in algorithm design. This course is an introduction to design and analysis of randomized algorithms at a level accessible to advanced undergraduates and to graduate students. We will cover general techniques for designing and analyzing randomized algorithms as well as representative applications in various domains. Topics covered include approximation algorithms, algebraic techniques for fingerprinting, interactive and probabilistically checkable proof systems, markov chains, primality testing, metric embeddings, and sketching and streaming algorithms.

We will use the textbook by Motwani and Raghavan, titled Randomized Algorithms, as well as supplementary lecture notes provided in the class.

The prerequisite for the course is an undergraduate course in algorithms (CIS 320) or equivalent. You do not need to have taken a course on statistics (familiarity with elementary probability theory concepts like expectation and variance is sufficient).