Course presentation form (available also as a pdf file)
Objectives. The objective of the Theory of Computing course is to introduce and study abstract, mathematical models of computation (such as Turing machines, formal grammars, recursive functions), and to use the abstract computation models to study the ability to solve computational problems, by identifying both the intrinsic limitations of computing devices, and the practical limitations due to limited availability of resources (time and space). A second objective is to show how to reason and prove properties about computations in a precise, formal, abstract way.
Prerequisites. There are no prerequisites in terms of courses to attend. Students should be familiar with notions of mathematics and set theory, and with basic proof techniques, as taught in the mathematics courses of a bachelor in computer science.
Teaching material
[M1] Introduction to Automata Theory, Languages, and Computation (3rd edition). J.E. Hopcroft, R. Motwani, J.D. Ullman. Addison Wesley, 2007.Additional reading material
[M2] Lecture Notes for Theory of Computing. Diego Calvanese. 2008. Will be made available on the course web page as scanned pages in pdf.
[M3] Languages and Machines (3rd edition). Thomas A. Sudkamp. Addison Wesley, 2005. Only Chapter 13.
[M4] Complexity Theory. Ingo Wegener. Springer, 2005. Only Chapter 14.
Some lectures and exercises have been rescheduled, as specified
here (changes with respect to the regular
schedule are marked in yellow).
See also the
timetable
page for changes.