CS747 - Randomized Methods in Computational Complexity (Sem I, 2018-19)


Instructor: Nitin Saxena

TA: Sumanta Ghosh

Office: RM 203

Lectures: M, Th (10:30-12) ; KD103

Office Hours: TBA

Email: nitin [at] iitk . ac . in


In this course we will study how randomness helps in designing algorithms and how randomness can be removed from algorithms.

We will start by formalizing computation in terms of algorithms and circuits. We will see an example of randomized algorithms, identity testing, and prove that eliminating randomness would require proving hardness results. We then prove a hardness result for the problem of parity using randomized methods. We construct certain graphs called expanders that are useful in reducing randomness in algorithms. These lead to a surprising logarithmic-space algorithm for checking connectivity in graphs.

We show that if there is hardness in nature then randomness cannot exist! This we prove by developing  pseudo-random generators and error-correcting codes. We show how to extract randomness from a weakly random source by using extractors. Finally, if time allows, we discuss how to probabilistically check proofs (PCP) and prove the hardness of approximating some NP-hard problems.

Prerequisites: Theory of Computation, Algebra.

Text Book: Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach,  http://www.cs.princeton.edu/theory/complexity/


[15-Nov-18] EndSem due on 20-Nov (day-end).
MidSem due on 18-Sep (day-end).
[26-Jul-18]  Course begins on Mon, 30-Jul-18.