Foundations of Computing (2012/2013)

Course code
Name of lecturer
Roberto Giacobazzi
Roberto Giacobazzi
Number of ECTS credits allocated
Academic sector
Language of instruction
I semestre dal Oct 1, 2012 al Jan 31, 2013.
Web page

Lesson timetable

Learning outcomes

The course covers standard principles and methods in theoretical computer science, notably in automata theory and computability. The course is structured in two parts: in the first part we cover automata, regular languages, context-free grammars, normal forms and formal Chomsky's language hierarchy. In the second part we cover the notion of computable function, decidability and issues in the mathematical or recursion.

The course requires the standard courses on Programming, Algorithms, Discrete mathematics and logic. It is introductory for the advanced courses in Complexity, Programming languages and Compilers, as well as for the courses in Security and Cryptography, Static Analysis and Protection, Artificial Intelligence, Automated Deduction, Semantics, Non-standard computational models.


Automata and formal languages (20h): Formal languages and grammars, finite state automata, regular languages, context-free languages, normal forms, Push-down automata, Chomsky classification of formal languages. Computability (25h): intuitive notion of algorithm, Turing analysis of computable functions, Turing machines and WHILE-programs, Church thesis, Goedelization, universality, Theorem s-m-n, unsolvable problems and halting problem, metaprogramming, recursive and recursive enumerable sets, Recursion theorems, Rice Theorem, reducibility, complete, creative and productive sets.

Assessment methods and criteria

Written exam in 5 sessions, with intermediate evaluation. The exams are scheduled as follows: 1 intermediate (written) evaluation during the course, 2 exam in the Extraordinary Session at the end of the course, 1 exam in the Summer Session and 2 exams in the Fall Session.