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:3012:30 (lecture) 
Wednesday
8:3010:30 (lecture) 
Wednesday
16:0018: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
 ChurchTuring 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 nonrecursive/nonR.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 
Murecursive functions
 Murecursive functions
(Lec 25,26)

 
Preparation for midterm exam
(Exer 7)

#7 Dec. 3 
NPcompleteness
 P and NP
(Lec 27,28)

NPhardness
(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 NPhardness
(Exer 9)

#9 Jan. 7 
PSPACE and NPSPACE
 Savitch's theorem
(Lec 37,38)

PSPACEcompleteness of QBF
(Lec 39,40)

Tiling problems
(Exer 10)

#10 Jan. 14 
Nonuniform complexity
 Circuits
(Lec 41,42)

Nonuniform complexity classes
(Lec 43,44)

Boolean circuits
(Exer 11)

#10bis Jan. 16 
Nonuniform complexity
 Nonuniform 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 Helloworld 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]
 multitape Turing Machines
 running time of a Turing Machine
 nondeterministic Turing Machines
 What you should know after the lecture
 how a multitape TM can be simulated by a singletape TM
 how a nondeterministic TM can be simulated by a multitape TM (and
hence also by a singletape TM)
 the cost of simulating a nondeterministic TM by a deterministic TM
Exercise 3  24/10/2007
 Exercises on multitrack, multitape, and nondeterministic 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
 nonR.E. languages
 ChurchTuring Thesis
 closure properties of recursive and R.E. languages
 What you should know after the lecture
 how languages/problems can be classified
 the ChurchTuring 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 nonrecursive/nonR.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 nonR.E. language: the diagonalization languages
 a nonrecursive 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 nonR.E.
 how to prove that the universal language is nonrecursive
 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
 courseofvalues 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 courseofvalues 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:
Murecursive functions
Lectures 25,26  29/11/2007
 Topics
[M2: Part 4]
 murecursive 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:
NPcompleteness
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 murecursive 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
 polytime reductions
 NPhardness and NPcompleteness
 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 NPhard
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]
 coNPcomplete 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 NPhardness
[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
 PSPACEhardness of QBF
 What you should know after the lecture
 how to evaluate a QBF in polynomial space
 how to prove PSPACEhardness of QBF
Exercise 10  9/1/2008
Week 10:
Nonuniform 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 nonuniform 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:
Nonuniform complexity
Lectures 45,46  16/1/2008
 Topics
[M2: Part 7]
 simulation of TMs by uniform circuits
 nonuniform TMs
 simulation of circuits by nonuniform TMs
 What you should know after the lecture
 how to simulate a TMs by a uniform circuit
 how a nonuniform TM is defined
 how to simulate a circuit by a nonuniform 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 spacebounded nonuniform TMs
 simulation of spacebounded 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 spacebounded nonuniform TM
 how a spacebounded TM can be simulated by a BDD
Course home page
Last modified:
Sunday, 22Mar2009 16:14:05 CET