Free University of Bolzano/Bozen
Faculty of Computer Science
Master of Science in Computer Science
Theory of Computing
Lectures A.Y. 2007/2008
Teaching material
[M1] Introduction to Automata Theory, Languages,
and Computation (3rd edition). J.E. Hopcroft, R. Motwani,
J.D. Ullman. Addison Wesley, 2007.
[M2] Lecture Notes for
Theory of Computing. Diego Calvanese. 2007. Available as scanned
pages in pdf.
[M3]
Exercises on Theory of
Computing. Available as scanned pages in pdf.
Lectures
Summary
Week |
Topics |
Monday
10:30-12:30 (lecture) |
Wednesday
8:30-10:30 (lecture) |
Wednesday
16:00-18:00 (exercise) |
Extra
(lecture) |
#1 Oct. 8 |
Course introduction
|
Course introduction, basic notions about sets
(Lec 1,2)
|
Basic notions about relations, functions, languages
(Lec 3,4)
|
Formal proofs
(Exer 1)
|
#2 Oct. 15 |
Undecidability
|
Undecidable problems
(Lec 5,6)
|
The Turing Machine
(Lec 7,8)
|
Turing Machines
(Exer 2)
|
#3 Oct. 22 |
(Extended) Turing Machines
| Programming techniques for TMs
(Lec 9,10)
|
Multitape and nondeterministic TMs
(Lec 11,12)
|
Nondeterministic TMs and extensions of TMs
(Exer 3)
|
#4 Oct. 29 |
Decidability and undecidability
| Church-Turing Thesis
(Lec 13,14)
|
Closure properties of R.E. languages
(Lec 15,16)
|
TMs computing functions
(Exer 4)
|
#5 Nov. 19 |
Reductions
| Showing languages to be non-recursive/non-R.E.
(Lec 17,18)
|
Rice's theorem, primitive recursive functions
(Lec 19,20)
|
Recursive and R.E. languages
(Exer 5)
|
#6 Nov. 26 |
Recursive functions
| Primitive recursive functions
(Lec 21,22)
|
Gödel numbering, non primitive recursive functions
(Lec 23,24)
|
Primitive recursive functions
(Exer 6)
|
#6bis Nov. 29 |
Mu-recursive functions
| Mu-recursive functions
(Lec 25,26)
|
-- |
Preparation for midterm exam
(Exer 7)
|
#7 Dec. 3 |
NP-completeness
| P and NP
(Lec 27,28)
|
NP-hardness
(Lec 29,30)
|
Midterm exam
(ME)
|
#8 Dec. 10 |
NP and coNP
| Cook's theorem
(Lec 31,32)
|
Oracle TMs
(Lec 33,34)
|
Reduction CSAT to 3SAT
(Exer 8)
|
#8bis Dec. 13 |
PSPACE
| PSPACE
(Lec 35,36)
|
-- |
Reductions for NP-hardness
(Exer 9)
|
#9 Jan. 7 |
PSPACE and NPSPACE
| Savitch's theorem
(Lec 37,38)
|
PSPACE-completeness of QBF
(Lec 39,40)
|
Tiling problems
(Exer 10)
|
#10 Jan. 14 |
Non-uniform complexity
| Circuits
(Lec 41,42)
|
Non-uniform complexity classes
(Lec 43,44)
|
Boolean circuits
(Exer 11)
|
#10bis Jan. 16 |
Non-uniform complexity
| Non-uniform TMs and circuits
(Lec 45,46)
|
BDDs
(Lec 47,48)
|
-- |
Details
Week 1:
Course introduction
Lectures 1,2 - 8/10/2007
- Topics
[M2: Part 1]
- course presentation
- basic definitions about sets
- What you should know after the lecture
- the basic definitions regarding functions, relations, and their
properties
Lectures 3,4 - 10/10/2007
- Topics
[M2: Part 1]
- basic definitions about sets, relations, functions
- cardinality of a set, countable and uncountable sets, Cantor's
theorem
- basic definitions about languages
- What you should know after the lecture
- the definition of cardinality of a set
- the difference between countable and uncountable sets
- Cantor's diagonalization argument
- the formal meaning of alphabet, string, language
Exercise 1 - 10/10/2007
- Review of basic proof techniques
[M2:
Part 0]
- deductive proofs
- proving equivalences of sets
- proof by contradiction
- proof by induction
Week 2:
Undecidability
Lectures 5,6 - 15/10/2007
- Topics
[M2: Part 2]
- an example for an undecidable problem: the Hello-world problem
- proving undecidability by reduction to an undecidable problem
- What you should know after the lecture
- the notion of reduction
- how to prove that a problem is undecidable by reduction to another
undecidable problem
Lectures 7,8 - 17/10/2007
- Topics
[M2: Part 2]
- the Turing Machine
- instantaneous description of a Turing Machine
- recursive enumerable and recursive languages
- What you should know after the lecture
- how a Turing Machine is formally defined
- design Turing Machines that recognize some simple languages
Exercise 2 - 17/10/2007
Week 3:
Turing Machines and their extensions
Lectures 9,10 - 22/10/2007
- Topics
[M2: Part 2]
- examples of Turing Machines
- programming techniques for Turing Machines
- storage in the state
- multiple tracks
- subroutines and procedure calls
- What you should know after the lecture
- how one can program a TM easier by imposing structure on states and
tape symbols
- how one can implement a procedure call with a TM
Lectures 11,12 - 24/10/2007
- Topics
[M2: Part 2]
- multi-tape Turing Machines
- running time of a Turing Machine
- nondeterministic Turing Machines
- What you should know after the lecture
- how a multi-tape TM can be simulated by a single-tape TM
- how a nondeterministic TM can be simulated by a multi-tape TM (and
hence also by a single-tape TM)
- the cost of simulating a nondeterministic TM by a deterministic TM
Exercise 3 - 24/10/2007
- Exercises on multitrack, multitape, and non-deterministic Turing
Machines
[M3:
Exercise 03]
Week 4:
Decidability and undecidability
Lectures 13,14 - 29/10/2007
- Topics
[M2: Part 3]
- classes of languages/problems
- recursive/decidable languages
- recursively enumerable (R.E.) languages
- non-R.E. languages
- Church-Turing Thesis
- closure properties of recursive and R.E. languages
- What you should know after the lecture
- how languages/problems can be classified
- the Church-Turing Thesis and its implications
- how to prove closure properties of recursive and R.E. languages
Lectures 15,16 - 31/10/2007
- Topics
[M2: Part 3]
- showing languages to be non-recursive/non-R.E.
- encoding Turing Machines as binary strings/integers
- enumerating binary strings/Turing Machines
- What you should know after the lecture
- how to encode a Turing Machine as a binary string
Exercise 4 - 31/10/2007
- Exercises on Turing Machines computing functions
[M3:
Exercise 04]
Week 5:
Reductions
Lectures 17,18 - 19/11/2007
- Topics
[M2: Part 3]
- a non-R.E. language: the diagonalization languages
- a non-recursive language: the universal language
- Universal Turing Machines
- the notion of reduction between problems/languages
- What you should know after the lecture
- how to prove that the diagonalization language is non-R.E.
- how to prove that the universal language is non-recursive
- what a reduction is
Lectures 19,20 - 21/1/2007
- Topics
[M2: Part 3,
M2: Part 4]
- Rice's theorem
- Primitive recursive functions
- What you should know after the lecture
- how to prove Rice's theorem
- the definition of primitive recursive functions
- how to construct some simple primitive recursive functions
Exercise 5 - 21/11/2007
Week 6:
Recursive functions
Lectures 21,22 - 26/11/2007
- Topics
[M2: Part 4]
- showing computability of primitive recursive functions
- bounded operators
- What you should know after the lecture
- how to prove that every primitive recursive function is Turing
computable
- how to define primitive recursive functions using bounded
minimizations
- what a reduction is
Lectures 23,24 - 28/11/2007
- Topics
[M2: Part 4]
- Gödel numbering
- course-of-values recursion
- computable functions that are not primitive recursive
- What you should know after the lecture
- how to encode and decode a sequence of numbers by means of a single
number
- how to define functions by means of course-of-values recursion, and
how to show that they are primitive recursive
- how to prove the existence of computable functions that are not
primitive recursive
Exercise 6 - 28/11/2007
Week 6 bis:
Mu-recursive functions
Lectures 25,26 - 29/11/2007
- Topics
[M2: Part 4]
- mu-recursive functions
- arithmetization of Turing Machines
- What you should know after the lecture
- the definition of primitive recursive functions
- how to define a (primitive) recursive function that computes the
trace of a Turing Machine computation
Exercise 7 - 30/11/2007
- Exercises on the topics of the midterm exam
[M3:
Exercise 7]
Week 7:
NP-completeness
Lectures 27,28 - 3/12/2007
- Topics
[M2: Part 4,
M2: Part 5]
- arithmetization of Turing Machines
- tractable and intractable problems
- the classes P and NP
- a problem in NP: SAT
- What you should know after the lecture
- how to define a mu-recursive function that simulates the
computation of a Turing Machine computation
- how the classes P and NP are defined
- how to show a problem to be in NP
Lectures 29,30 - 5/12/2007
- Topics
[M2: Part 5]
- SAT and CSAT
- poly-time reductions
- NP-hardness and NP-completeness
- What you should know after the lecture
- how to polynomially reduce one problem to another
- sketch the proof of Cook's theorem
- how to show a problem to be NP-hard
Midterm exam - 5/12/2007
- Topics
- Turing Machines
- recursive and recursive enumerable languages
- recursive functions
Week 8:
NP and coNP
Lectures 31,32 - 10/12/2007
- Topics
[M2: Part 5]
- What you should know after the lecture
- how to prove Cook's theorem
Lectures 33,34 - 12/12/2007
- Topics
[M2: Part 5,
M2: Part 6]
- coNP-complete problems
- oracle Turing Machines
- What you should know after the lecture
- what an oracle TM is
- how complexity classes based on oracle TMs are defined
Exercise 8 - 12/12/2007
Week 8 bis:
PSPACE
Lectures 35,36 - 13/12/2007
- Topics
[M2: Part 6]
- the polynomial hierarchy and PSPACE
- quantified boolean formulae
- space and time bounds for Turing Machines
- What you should know after the lecture
- how the polynomial hierarchy is defined
- how the problem of QBF is defined
- relationship between the space bound and the time bound for a TM
Exercise 9 - 14/12/2007
- Exercises on reductions to show NP-hardness
[M3:
Exercise 9]
Week 9:
PSPACE and NPSPACE
Lectures 37,38 - 7/1/2008
- Topics
[M2: Part 6]
- relationship between PSPACE and NPSPACE (Savitch's theorem)
- evaluation of a QBF
- What you should know after the lecture
- how to prove Savitch's theorem
- how to evaluate a QBF
Lectures 39,40 - 9/1/2008
- Topics
[M2: Part 6]
- evaluation of a QBF in polynomial space
- PSPACE-hardness of QBF
- What you should know after the lecture
- how to evaluate a QBF in polynomial space
- how to prove PSPACE-hardness of QBF
Exercise 10 - 9/1/2008
Week 10:
Non-uniform complexity
Lectures 41,42 - 14/1/2008
- Topics
[M2: Part 6,
M2: Part 7]
- the classes EXPTIME, EXPSPACE, and the exponential hierarchy
- basic definitions about circuits
- What you should know after the lecture
- typical problems complete for the classes EXPTIME and EXPSPACE
- how circuits are defined
- what the size and depth of a circuit are
Lectures 43,44 - 15/1/2008
- Topics
[M2: Part 7]
- circuit families
- the non-uniform complexity classes SIZE(f(n)) and DEPTH(f(n))
- upper bounds on SIZE and DEPTH for a language L
- What you should know after the lecture
- how the complexity classes SIZE(f(n)) and DEPTH(f(n)) are defined
- how to prove that every language L has an exponential upper bound
on SIZE
- how to prove that some languages L has an exponential lower bound
on SIZE
- how to prove that every language L has a linear upper bound on
DEPTH
Exercise 11 - 16/1/2008
Week 10 bis:
Non-uniform complexity
Lectures 45,46 - 16/1/2008
- Topics
[M2: Part 7]
- simulation of TMs by uniform circuits
- non-uniform TMs
- simulation of circuits by non-uniform TMs
- What you should know after the lecture
- how to simulate a TMs by a uniform circuit
- how a non-uniform TM is defined
- how to simulate a circuit by a non-uniform TM
Lectures 47,48 - 17/1/2008
- Topics
[M2: Part 7]
- Binary Decision Diagrams (BDDs)
- branching program complexity of a boolean functions
- simulation of BDDs by space-bounded non-uniform TMs
- simulation of space-bounded TMs by BDDs
- What you should know after the lecture
- how BDDs are defined
- what the complexity measures for BDDs are
- how a BDD can be simulated by a space-bounded non-uniform TM
- how a space-bounded TM can be simulated by a BDD
Course home page
Last modified:
Sunday, 22-Mar-2009 16:14:05 CET