The course covers standard principles and methods in theoretical computer science, notably in automata theory and computability.
The course aims at providing skills in theoretical computer science and programming languages.
At the end of the course, the student will be able to understand advanced computer science notions; to apply the acquired capabilities and knowledge for problem solving in its field of study; to be able to develop necessary expertise for affording the following studies with a sufficient degree of autonomy.
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.
The course is structured in two parts.
Automata and formal languages (28h):
Formal languages and grammars,
finite state automata and regular languages,
context-free languages, normal forms, Push-down automata,
Chomsky classification of formal languages.
intuitive notion of algorithm,
Turing analysis of computable functions, Turing machines and WHILE-programs,
Theorem s-m-n, unsolvable problems and halting problem,
recursive and recursive enumerable sets,
Recursion theorems, Rice Theorem,
reducibility, complete, creative and productive sets.
|P. Odifreddi||Classical recursion theory||Elsevier North-Holland||1989|
|N. Jones||Computability and Complexity||MIT Press||1997|
|John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman||Introduction to Automata Theory, Languages and Computation (Edizione 2)||Addison-Wesley||2000||0201441241|
|H. Rogers||Theory of recursive functions and effective computability||MIT Press||1988|
Written exam in 4 sessions, with intermediate evaluation. The exams are scheduled as follows: 1 intermediate (written) evaluation during the course, 1 exam in the Extraordinary Session at the end of the course, 1 exam in the Summer Session and 1 exams in the Fall Session. Each exam is split into two parts which can be passed separately and the whole evaluation is obtained as the mathematical average of the two evaluations. The exam is passed if the average evaluation is greater or equal to 18/30. Each evaluation remains valid for the whole current academic year.
Mandatory oral exam for evaluation greater than 26 (included).
The task of the written exam consists in verifying the comprehension of course contents and the capability to apply these contents in the resolution of exercises in which students have to mainly classify languages (regular or context free) and sets (recursive theory and completeness) by using the formal proof tools provided in the course.
The task of the oral exam is that of verify an advanced comprehension of the course contents allowing a critic analysis and a reprocessing of the studied notions and results. This comprehension may be verified also by asking theorems and proofs.