Anno Accademico 2006-2007.
Lectures:
from 11.12.06 to 16.02.07 (No lectures from 23.12.06 to
07.01.07)
Monday 16:00-17:45 Room 2 PP2
Tuesday 11:30-13:15 Room 2 PP2
Thursday 11:30-13:15 Room 2 PP2
Tuesday
18.09.07
16:30 (Room 09 n.e.)
Seminario
didattico-scientifico in preparazione all'esame
Thursday 20.09.07
10:00 (Room 06 n.e.) Primo
appello (*)
Tuesday 25.09.07 10:00 (Room 06 n.e.) Secondo appello (*)
---------------------------------
(*) Prenotarsi
nel foglio predisposto all'ingresso dell'edificio
di Ingegneria
dell'Informazione
(Via del Politecnico 1, 00133 Roma)
entro
sette giorni dalla data
dell'appello.
--> Non
ci si puo` prenotare a entrambi gli appelli.
Se si e` studenti "online" nella prenotazione indicare: online.
Inviare
entro sette giorni dalla
data dell'appello a:
alt@iasi.cnr.it
e
a pettorossi@info.uniroma2.it
un messaggio con oggetto:
alt2007_CognomeNome_Matricola
con testo: Invio
in allegato i miei elaborati relativi alle due prove in itinere che ho
fatto da solo.
Nome Cognome
e con allegati due file di
tipo testo (.cpp oppure .java oppure .txt) con
i programmi documentati,
con indicazioni per la loro compilazione ed esecuzione, e
con alcune prove di esecuzione riportate come commenti nel codice,
fatti dallo studente, relativi alle prove in itinere. I nomi dei due
file siano:
alt2007_CognomeNome_Matricola_Membership1
alt2007_CognomeNome_Matricola_Parsing2
Se si e` studenti "online":
altonline2007_CognomeNome_Matricola_Membership1
altonline2007_CognomeNome_Matricola_Parsing2
-->
Non si includano
screenshots e ci
si attenga a queste indicazioni, per cortesia.
-->
Si
invii il messaggio con i
due allegati, anche se cio` e` stato fatto per un
appello
precedente.
---------------------------------
Obiettivo del corso.
Introduzione ai linguaggi formali e agli automi con particolare
riferimento
ai linguaggi regolari, ai linguaggi liberi dal contesto, agli automi
finiti e
agli automi pushdown. Introduzione
alla teoria della computabilità.
Introduzione
alle tecniche fondamentali per l'analisi sintattica e
la compilazione dei linguaggi di programmazione.
Programma del corso:
Preliminari matematici: relazioni, funzioni. Gerarchia di Chomsky.
Linguaggi regolari,
espressioni regolari, automi finiti deterministici e nondeterministici.
Parsing dei linguaggi regolari.
Linguaggi context-free e automi pushdown deterministici e
nondeterministici.
Parsing dei linguaggi context-free: Cocke-Younger-Kasami parser,
chop-expand parser,
Earley parser (facoltativo), LL(1) parsers, LR(0) parsers, LR(1)
parsers. LALR(1)
parsers.
Macchina di Turing e grammatiche di tipo 0 e 1. KMP pattern matcher.
Programma
dettagliato del corso e domande
d'esame.
Previous
Exam Questions.
Dispense:
1.
Visiting
Trees While Looking for Good Nodes 2.
Chop
Expand Parser in Java
3.
Chop
Expand Parser in Prolog 4.
LL(1) Parsing 5.
Theorem
Prover in Java
6. Knuth-Morris-Pratt
algorithm in Java 1.5 7.
Quantifiers 8.
Dijkstra's
SSSP
9.
DistributedTermination 10.
LALR(1)
parsing using Bison 11.
HsiangTheoremProver
Prerequisiti: Fondamenti di
Informatica. Elementi di
programmazione in C++ oppure Java.
Uso di arrays, liste, puntatori e
ricorsione. Elementi di Algebra e di
Calcolo dei Predicati.
Modalità di esame:
Presentazione e discussione degli esercizi delle prove in itinere (da
svolgere da soli!). Scritto e orale.
Lo studente dovrà presentarsi all'esame con il libretto
di
iscrizione.
------------------------------------------------------------------------------------------------------------
Testi consigliati.
Errata
Corrige of Books
1. Pettorossi, A.: Automata Theory and Formal
Languages.
Aracne, 2006.
Escluse le sezioni: 1.6, 2.7, 2.11, 3.13.2,
3.14, 3.15, 3.16, 6.2, 6.3, 6.4, 7.1, 7.2, 7.6.
e le prove dei teoremi dei capitoli 4, 5 e della
sezione 6.1
2. A.V. Aho, R. Sethi, J.D. Ullman: Compilers: Principles, Techniques, and
Tools.
Addison-Wesley, 1986. This book is known as "The
Dragon Book".
The following sections only:
4.4 (Top-Down Parsing), 4.5 (Bottom-Up Parsing), 4.7
(LR-Parsers). Handouts are available for this part
of the course.
--------
Tra i tanti testi disponibili ove approfondire alcuni argomenti del
corso,
si segnalano i seguenti:
3. J. E. Hopcroft, R. Motwani, J.D. Ullman: "Automi,
Linguaggi e
Calcolabilità", Addison-Wesley,
Pearson Education Italia, 1997. In Inglese: "Introduction to
Automata Theory, Languages,
and Computation, Addison-Wesley Pub. Co., 2001
(Revised Edition).
4. Pettorossi, A.: Quaderni di
Informatica Parte I. 2nd
Edition, Aracne, 2004. In particular, Chapters
1 and 8.
-------------------------------------------------------------