A lecture-by-lecture outline
ECE 664
Computability, Complexity, and Formal Languages
by
Avi Kak
Fall 2007
1. Why Study Computability, Formal Languages, and Complexity
2. Sets, Tuples, Cartesian Products, Partial and Total Functions, Predicates, Quantifiers, Proofs
PART 1:   Computability
3. The Minimalist (but all powerful) Programming Language  S
4. Partially Computable Functions
5. Primitive Recursive Functions
6. Sixteen Building-Block PRC Functions
7. Minimalization, Pairing Functions, and Godel Numbers
8. Church's Thesis and Unsolvability of the Halting Problem
9. A Universal Program that can Execute Any Program and the Concept of Recursive Enumerability
10. Extending Computability Theory to Calculations on Strings, and The Minimalist (but all powerful) Language S_n for String Processing
11. The Post-Turing Language T for String Processing and the Equivalence of the Languages S, S_n, and T
12. Turing Machines
13. Languages Accepted by a Turing Machine, Recursive Sets vs. Recursively Enumerable Sets
14. String Computations with Productions and Processes
15. Post's Correspondence Problem
16. Phrase Structure Grammars and Context Sensitive Grammars
PART 2:   Grammars and Automata
17. Finite Automata and Regular Languages
18. Properties of Regular Languages
19. Regular Expressions and the Pumping Lemma
20. Context-Free Languages
21. Regular Languages, the Chomsky Normal Form, and Bar-Hillel's Pumping Lemma
22. Properties of Context-Free Languages
23. Bracket Languages and the Pushdown Automata
PART 3:   The Theory of NP-Completeness
24. Basic Vocabulary: Problem, Problem Instance, Algorithm, Input Length, Time Complexity Function
25. The Different Degrees of Intractability and The Nondeterministic Computer
26. Polynomial-time Reducibility and the class NP of Problems
27. Nondeterministic Algorithms and Nondeterministic Turing Machines for Solving Problems in class NP
28. The First and Foremost NP-Complete Problem: Satisfiability
29. The six basic NP-Complete Problems and NP-completeness proof for 3SAT
30. NP-Completeness Proofs for 3DM, Vertex Cover, Clique, and Partition
31. General Techniques for Proving NP-Completeness. (Examples of Proofs by Restriction: Subgraph Isomorphism, Knapsack, Multiprocessor Scheduling, and Bounded-Degree Spanning Tree)
33. NP-Completeness Proofs based on Local Replacement (Example: Proof for "Partition Into Triangles")
34. NP-Completeness Proofs based on Component Design (Example: Proof for "Minimum Tardiness Sequencing")
35. Reasoning about the Complexity of Subproblems of a given NP-Complete Problem (Subproblems of Precedence Constrained Scheduling, Graph 3-Colorability, etc.)
36. Strong-sense and Weak-sense NP-Completeness for Number Problems
37. Generalizing Polynomial Transformability to Turing Reducibility. Definition of NP-Hard.
38. Oracle Turing Machines for Going Beyond Class NP
39. Extending the Theory of NP-Completeness to Combinatorial Optimization Problems
40. Performance Guaranteed Approximation Algorithms for Solving NP-Hard Combinatorial Optimization Problems. (Bin Packing, Traveling Salesman Optimization, etc.)
41. Non-Approximable and the Easily-Approximable NP-Hard Optimization Problems (Graph Coloring Optimization Problem and the Knapsack Optimization Problem)
42. The classes NPI, Co-NP, P^NP and NP^NP of problems. The class #P of Enumeration Problems.
43. Storage considerations: The classes PSPACE, PSPACE-Complete, and PSPACE-hard.



Back to Avi Kak's home page