Lectures

Date Topics Lecture Notes and Relevant Book Chapters
8/21 Introduction. What is computation and what is an algorithm. Turing Machines. Syllabus. Sipser Sec. 3.1.
8/23 Decidability and Turing Recognizability. Variants of Turing Machines, the RAM model, and their equivalence. The Church-Turing Thesis. Sipser Sec. 3.1 - 3.3.
8/28 Examples of Decidable Languages: Primality, Graph Connectivity, etc. The existence of languages that are NOT Turing Recognizable. Cantor's diagonalization. Sipser Sec. 4.2. Note: The exposition in Sipser's text is a little terse and does not contain some details. Lecture notes will be provided soon.
8/30 The undecidability of the Halting Problem and the unrecognizability of its complement. Other undecidable problems. Sipser Sec. 4.2, 5.1
9/4 Reducibility and more undecidable problems. Rice's Theorem. Sipser Sec. 5.1, 5.3
9/6 Statement and proof of Rice's Theorem. Hilbert's 10th Problem and the statement of its undecidability. The Post Correspondence Problem. Sipser Sec. 3.3 and Sec. 5.2. Notes on Rice's Theorem.
9/11 Finite Fourier Transform and Fast Fourier Transform. Kleinberg-Tardos 5.6, CLRS 30.1 - 30.2. Some notes will also be provided.
9/13 Fast Fourier Transform and Convolution. Kleinberg-Tardos 5.6, CLRS 30.1 - 30.2. Some notes will also be provided.
9/18 Fast Fourier Transform and Convolution. Kleinberg-Tardos 5.6, CLRS 30.1 - 30.2. Some notes will also be provided.
9/20 Maximum Flow. Existence of a maximum flow in any flow network with arbitrary real capacities. Residual networks and augmenting paths. Kleinberg-Tardos 7.1.
9/25 - 9/27 Maximum Flow. The Ford-Fulkerson algorithm. Termination of Ford-Fulkerson based on the assumption that the capacities are integer-valued. Efficiency (and inefficiency) of Ford-Fulkerson. Correctness of Ford-Fulkerson. The Max-Flow Min-Cut Theorem. Kleinberg-Tardos 7.1 - 7.2.
10/2 Coping with large capacities and real-valued capacities. The Dinic-Edmonds-Karp implementation of Ford-Fulkerson and analysis. CLRS 26.2, p. 660 - 662.
10/4 Analysis of Dinic-Edmonds-Karp completed. Maximum Matching in Bipartite Graphs. CLRS 26.2, 26.3. KT 7.5
10/11 Maximum bipartite matching completed. Polynomial-time computability and the complexity class P. Examples of languages in P. A brief discussion of two famous and fundamental problems that have polynomial-time algorithms: Primality Testing and Linear Programming. CLRS 26.3, KT 7.5. Sipser 7.1 - 7.2, CLRS 34.1.
10/16 The class NP. Sipser 7.3, CLRS 34.2, KT 8.3.
10/18 In-class midterm quiz.
10/23 Solutions to midterm questions. The class NP. The P vs NP question. Sipser 7.3, CLRS 34.2, KT 8.3.
10/25 Polynomial-time reduction. NP-Completeness. The existence of NP-Complete languages (following directly from the definition of NP-Completeness). Statement of the Cook-Levin Theorem. Sipser 7.4, CLRS 34.4, KT 8.1-8.4
10/30 Application of the Cook-Levin Theorem - The NP-Completeness of CLIQUE and Integer Programming. Sipser 7.4, CLRS 34.5, KT 8.1-8.4
11/1 Proof of the Cook-Levin theorem. Sipser 7.4
11/6 More NP-Complete problems. See Sipser 7.5, KT 8.1-8.8, CLRS 34.5
11/8 The equivalence of decision and search problems for NP-Complete languages. NP-hard optimization problems and approximation algorithms.
11/13 Approximation algorithms for Set Cover and Vertex Cover. KT 11.3-11.4, CLRS 35.3, 35.1
11/15, 11/20, 11/27, 11/29, 12/4 Randomness in computation: The model of randomized computation. Efficient generation of a random prime number from an interval (based on the celebrated Prime Number Theory and the existence of a polynomial-time algorithm for testing primality). Polynomial identity testing. Communication efficient protocols for testing string equality. Karger's randomized algorithm for minimum cut. Random sampling and the Chernoff Bound. Complexity classes RP, coRP, BPP. Amplification of success probability.