teaching

Current/upcoming courses:

Winter 2024 (U of T): Derandomization and its connections in complexity theory, interactive proof systems, and cryptography 

Course Description

Randomized algorithms are everywhere in computer science, and they're crucial for areas such as cryptography and learning. Why then do theorists believe that when solving decision problems, random algorithmic choices can always be efficiently replaced by carefully planned deterministic choices? More generally, can we simulate algorithmic randomness in efficient ways, and if so - how?

In this course we'll dive into the BPP = P conjecture, which is one of the main conjectures in complexity theory. Starting from the definitions and classical results from the 1990s, we'll make our way to very recent research, passing through areas such as circuit complexity, error-correcting codes, interactive proof systems, cryptography, and more. Our goal will be to understand the conjecture and its theoretical basis, to learn about its recent strengthenings and about new approaches to studying it, and to get introduced to its broader implications on computer science.

Prerequisites

The course will assume basic background in complexity theory, which means that should have studied at least one course that includes complexity content (e.g., CSCC63 or CSC463 or CSC2401). If you're interested in the course but are unsure whether or not you have the necessary prerequisites, you're more than welcome to email me and ask about it.

Logistics

We will meet once per week, Tuesday 14:00-16:00, at Myhal 370.

Past courses:

Spring 2022 (Rutgers): Derandomization and its connections throughout complexity theory

Course Description

Randomness is a keystone in entire areas of computer science, such as cryptography and learning. Why then do most complexity theorists believe that randomness isn't necessary when solving decision problems and natural search problems? And what makes this conjecture so important?

This course will focus on the key challenge when studying this conjecture, which is derandomization: Efficiently simulating algorithms that use randomness by "deterministic" algorithms that don't use randomness. We will study the connection of derandomization to other main questions in complexity theory, such as complexity class separations, circuit lower bounds, meta-complexity problems, and more. This is the area of research that is typically called "hardness vs randomness". 

On our way from hardness to randomness and back we'll take a wild ride throughout complexity theory: We will study results from circuit complexity, interactive proof systems, coding theory, randomness extraction, learning theory, and more.

Prerequisites

I'll assume basic background in complexity theory, e.g. having studied at least one course that includes complexity content. You should be comfortable with basic modeling conventions (i.e., algorithm analysis and encodings of objects and of algorithms as strings), know about standard resources (time, space, randomness), and be familiar with the relations between complexity classes (e.g., P and NP and BPP and PSPACE).

If you're interested in the course but unsure whether your background suffices, it's likely that you can prepare well enough by reading ahead of time. Feel free to contact me about it.

Syllabus and learning goals

The course is designed for you to learn about derandomization, about its known connections with other main questions in complexity theory, and about technical tools used to obtain results in this area so far.

Ideally, at the end of the course you'll feel comfortable reading newly published papers in the area and thinking about them independently.

Expected work

Logistics

We will meet once per week, Thursday 12:10-3:10pm, in SEC 202. 

Each meeting will typically focus on one research paper. In the meeting I will present the paper in high-level, one of you will present the most interesting technical contents in more detail, and afterwards we'll have time for questions and free-form discussion.

Spring 2020 (WIS): Circuit complexity and Karp-Lipton theorems

Course Description

In January-March 2020 I gave a lecture series in course format at Weizmann, which was unfortunately truncated after seven meetings when COVID-19 was declared a pandemic in March. 

The course started with a survey of non-uniform complexity, including motivation, basic results, and connections to uniform complexity. The next topic was different approaches to circuit lower bounds and their limitations. And the main focus of the course was Karp-Lipton theorems, which connect non-uniform complexity with uniform complexity. The course focused both on techniques for proving Karp-Lipton theorems, most importantly relying on interactive proof systems; and on using such theorems to get circuit lower bounds, both via win-win analyses and via the algorithmic method (i.e., derandomization).