Automata and languages

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2017/2018
Year: 
3
Academic year in which the course will be held: 
2019/2020
Course type: 
Compulsory subjects, characteristic of the class
Credits: 
6
Period: 
First Semester
Standard lectures hours: 
52
Detail of lecture’s hours: 
Lesson (40 hours), Exercise (12 hours)
Requirements: 

The prerequisites for a profitable learning and for achieving the objectives of the course include the basic mathematical notions and the proof techniques imparted in the fundamental teaching of Algebra and Geometry of the first year, which is therefore a pre-requisite. Moreover, some knowledge of programming languages and algorithms and data structures will be helpful.

Final Examination: 
Orale

The exam aims to verify the acquisition and the correct understanding of the contents of the course. The exam is written and structured as follows: (part A) two questions concerning the notions presented in the course and their application; (part B) the proof of a theorem demonstrated in the course; (part C) five exercises of the kind discussed during class exercises.

The final grade will be determined as follows: 30% from the knowledge of definitions and examples of the concepts dealt during the course (part A); 20% from the knowledge and understanding of the theorem demonstrations; 50% from the proper conduct of the exercises.

The final grade is expressed in a score out of 30, where 18 represents the minimum and 30 the maximum.

Assessment: 
Voto Finale

This is a theoretical course providing an introduction to automata theory and formal languages and the main limitative results of computability theory. Such knowledge is aimed at forming and increasing the ability to manage abstraction of information through symbolic representation and thus the ability to understand an abstract and symbolic language; these aspects have a central role in several areas of computer science as compiler implementation, complex system modeling and software engineering. Expected learning outcomes includes the ability to use the proper terminology of automata theory, formal languages and computability theory.

• Mathematical preliminaries. (4h)
• Deterministic Finite Automata (DFA), Non-deterministic Finite Automata (NFA). Equivalence between DFA and NFA. (10h)
• Non-deterministic finite automata with ε-moves (ε-NFA). Equivalence between NFA and ε-NFA. (4h)
• Regular expressions. Equivalence between regular expressions and ε-NFA. (4h)
• Regular languages: main properties and Pumping Lemma. (4h)
• Context-free grammars: derivations, derivation trees, ambiguous grammars. Structure of a parser (6h)
• Pushdown Automata (PDA): acceptance by final state and acceptance by empty stack (equivalence). Equivalence between context free languages and PDA. (4h)
• Context-free languages: main properties and Pumping Lemma. (4h)
• The Chomsky Hierarchy. (2h)
• Deterministic and Non-deterministic Turing Machines (4h).
• Recursively enumerable languages and undecidable problems. (6h)

John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. Automi, linguaggi e calcolabilità, Pearson Paravia Bruno Mondadori, Terza Edizione, 2009.

Slides and exercises (PDF) are available on the e-learning platform.

Convenzionale

The teaching activities include lectures (40h) and class exercises (12h). The arguments presented during lectures are applied through class exercises; students are expected to actively participate in exercises discussion. The presented exercises have an essential role in preparing the final exam.

Office hours: by appointment via email.

Professors