In Semester 2, 2015-2016, I will be teaching COL 705: Theory of Computation and Complexity Theory.

Administrative Information.

When and Where.

Classes are held on Tuesday, Wednesday and Friday 12-1 pm. Location for Tue/Fri: Bharti building, Room 204. Location for Wed: Bharti 425.

Office Hours and Teaching Assistants.

The teaching assistants for the course are listed below. Please email them for setting up meeting times. I do not hold fixed office hours but will be happy to meet you anytime, just drop me an email!


Data Structures (equivalent of COL106) and (undergraduate) Theory of Computation (equivalent of COL 352).


Policies and Grades.

Collaboration is encouraged but you must write up solutions on your own. You must also write the names of all the people you discussed the problem with. In case you find material that will help you in solving some problems, you should mention the source in your writeup. Class participation will also be taken into account when assigning grades.
I expect all students to behave according to the highest ethical standards. Any cheating or dishonesty of any nature will result in failing the class.

Lecture Notes and Handouts.

We will follow the text Computational Complexity: A Modern Approach by Barak and Arora. The specific portions that we will cover will be announced on a per-class basis, but a tentative list of topics is below.
  1. Introduction, Review of Automata Theory, Time Complexity, P and NP, NP Completeness.
  2. Time Hierarchy theorems, Ladner's theorem, Diagonalization and its limits.
  3. Space Complexity, Savitch's theorem, PSPACE completeness.
  4. NL completeness, NL=co-NL, Polynomial hierarchy.
  5. Boolean circuits: non-uniform and uniform circuit complexity.
  6. Randomized Computation.
  7. The power of interaction: IP, IP=PSPACE, Arthur Merlin, MIP.
  8. PCP and hardness of approximation, quantum computation, cryptography

Here are topics that we covered in class, and slides/notes that we used.
  1. Lec 1 (Jan 4): Introduction to computation, complexity, questions we will study and open problems in the area. Also, class policies, grading scheme. Slides were used and are available here.
  2. Lec 2 (Jan 5): Recap: Automata theory. Slides were used and are available here.
  3. Lec 3 (Jan 8): Turing machines: definition and the construction of a universal turing machine. A good reference for the material is here.
  4. Lec 4 (Jan 12): DTIME, NTIME, P, NP. Slides were used and are available here.
  5. Lec 5 (Jan 15): NP Completeness. Slides are available here.
  6. Jan 18, Jan 19: No class, instructor not well. We will hold a makeup class later.
  7. Lec 6 (Jan 22): Deterministic time hierarchy theorem. Good lecture notes are here.
  8. Lec 7 (Jan 25): Non deterministic time hierarchy theorem. Good lecture notes are here.
  9. Jan 26: No class. Happy republic day!
  10. Lec 8 (Jan 27) (Make-up class for Jan 18) Ladner's theorem for existence of NP intermediate language. Good lecture notes are here and here.
  11. Lec 9 (Jan 29): Finishing proof of Ladner's theorem. Start limits of diagonalization.
  12. Lec 10 (Feb 2): Show that the P versus NP question cannot be resolved using arguments that relativize. A good reference is here.
  13. Lec 11, 12 (Feb 3 and 5):Finishing proof from last time. Started space complexity. Definitions of important classes, proof that TQBP is PSPACE complete. A good reference is here.
  14. Lec 13 (Feb 9): Problem solving session in preparation for the minor.
  15. Feb 10, Feb 12: No class due to Minor 1.
  16. Lec 13, 14 (Feb 16, 17): More on Space Complexity: NL and NL completeness. PATH is NL complete, NL \subset P, Savitch's theorem. The Immerman-Szelepcsenyi Theorem (NL=coNL). A good reference is here.
  17. Lec 15 (Feb 19): Polynomial Hierarchy. Discussion of MAX-IND-SET, MIN-CNF. Generalisation of NP and co-NP, definition of Sigma_i and Pi_i. Proof that hierarchy collapses if \Sigma_i = \Pi_i. A good reference is here.
  18. Lec 16 (Feb 23): More on Polynomial Hierarchy. Oracle machines, and alternating Turing machines. Slides are available here and here.
  19. Lec 17 (Feb 24): Finishing up polynomial hierarchy. Returning graded Minor 1 and discussing solutions.
  20. Mid Semester Break.
  21. Lec 18 (Mar 8): Introduction to non-uniform computation. Definition and motivation for Boolean circuits. The Power of Boolean circuits (any function can be computed by a Boolean circuit). Proof that every function is in SIZE(n 2^n). A good reference is here.
  22. Lec 19 (Mar 9): Proof that there exists a function that cannot be computed by a circuit of size (1-\epsilon) n/2^n. Two alternate definitions of P/poly, using circuits and non uniform TMs. A good reference is here.
  23. Lec 20 (Mar 11): Discuss two definitions of non-uniform TMs. Argued that they are equivalent. Proved that TIME(t(n)) \subseteq SIZE(T(n) log(T(n)). A good reference is here. Started Karp-Lipton Theorem that if NP \in P/poly, then \Sigma_2 = \Pi_2. A good reference is here.
  24. Lec 21 (Extra class, Mar 14): Finish Karp Lipton Theorem. Begin circuit lower bounds. Show that Threshold function T_n^k needs a circuit of size at least 2n-4. A good reference is here. Another referene is Theorem 2.5 in the book Algorithms and Complexity by Gerard Meurant.
  25. Lec 22, 23 (Mar 15 and 16): Define NC, AC classes. Parity Lower bound. A good reference is here.
  26. Lec 24 (Mar 18: ) Problem solving session in preparation for Minor 2.
  27. Break for Minor 2. Good luck!
  28. Lec 25, 26 (Mar 29, 30): Randomized time complexity. Definitions of RP, BPP, ZPP. Probability amplification of BPP. Randomized algorithms: polynomial identity testing, perfect matching in bipartite graphs. Useful notes are here.
  29. Lec 27 (Apr 1): BPP is in P/Poly. BPP is in Sigma_2 intersect Pi_2. Useful notes are here.
  30. Apr 5: No class. Will hold makeup class later.
  31. Lec 28, 29 (Apr 6 and 8): Why BPP does not have natural complete problems. Randomized space complexity. Definitions of RL, BPL. Discuss solutions for Minor 2. Useful notes are here.
  32. Lec 30 (Apr 12): Show that undirected connectivity UCONN is in RL. Description of randomized algorithm. Useful notes are here and here.
  33. Lec 31 (Apr 13): Complete analysis of UCONN \in RL. Discuss randomized algorithm for 2SAT. Useful notes are here.
  34. Lec 32 and 33 (Apr 18 and 19): Interactive proofs. Discussion of how randomization and communication help. Proof system for BPP with perfect completeness. Graph Non-isomorphism is in IP. Public coin proof systems. Useful notes are here.
  35. Lec 34 (Apr 22): Graph Non-isomorphism is in AM. Useful notes are here.
  36. Lec 35 (Apr 25): Co-NP is in IP. Useful notes are here.
  37. Lec 36 and Lec 37 (Apr 26 and 29): IP=PSPACE. Useful notes are here.
That's it folks! Good luck for the exam :).

Reading Material and References.

The textbook for the course is Computational Complexity: A Modern Approach by Barak and Arora. The following are useful additional references:
  1. Lecture notes by Luca Trevisan. See also these.
  2. Lecture slides by Manoj Prabhakaran.
  3. Lecture notes by Sandeep Sen.
  4. Lecture notes by Jon Katz.
  5. Helpful overview slides.