Diario delle lezioni¶
Potete trovare informazioni sulle modalità d'esame e sull'elenco degli argomenti che costituiscono il programma nella pagina di Informazioni sull'insegnamento,
Il seguente diario riporta gli argomenti e il materiale didattico e di supporto relativo sia alle lezioni già svolte (riguardo alle quali costituisce il programma d'esame de facto), che alle lezioni ancora da svolgere, per le quali è da intendersi del tutto indicativo (sia riguardo alle date che al contenuto).
Nota bene: diversamente dagli anni passasti, le lezioni si svolgono di norma il martedì e venerdì dalle ore 8:30 alle ore 10:30 in Aula Magistrale al V piano di Via Celoria 18.
Il materiale didattico indicato come TPT si riferisce al documento The Python Tutorial, quello indicato con PT si riferisce al libro di testo Parsing Techniques. A Practical Guide, quello indicato con ICD al libro Introduction to Compiler Design, e quello indicato con DAR a The Definitive ANTLR 4 Reference; il materiale indicato come H, E e S si riferisce agli Handout del docente (relativamente a lezioni, esercizi e soluzioni); si veda la nota sui numeri di sezione che reca indicazioni su quali parti del materiale sono parte del programma e quali letture consigliate, ma facoltative.
Num
Data
Argomento
Materiale didattico
1
Mar 27/2
Administrivia; introduzione a Python
2
Ven 1/3
Strutture dati ed algorimi elementari su alberi e grafi
3
Mar 5/3
Ripasso su grammatiche e linguaggi
4
Ven 8/3
Generazione delle parole, alberi di parsing e derivazioni
5
Mar 12/3
Ambiguità (casi notevoli); introduzione al parsing
6
Ven 15/3
Parsing, caso generale non direzionale (CYK)
7
Mar 19/3
Linguaggi regolari e automi a stati finiti
8
Ven 22/3
Parsing top-down (NPDA, simulazione BF e DF)
9
Mar 26/3
Recursive descent (con generazione automatica del parser)
10
Ven 5/4
Parsing bottom-up (simulazione BF e DF)
11
Mar 9/4
Parsing deterministico Top-Down (LL)
12
Ven 12/4
13
Mar 16/4
14
Ven 19/4
Parsing deterministico Bottom-Up (LR)
15
Mar 23/4
ANTLR: grammatiche, tokenizer, parser (visitor e listener)
DAR 1-2, 9.1-2; H15
16
Ven 3/5
DAR 3-4; H16
17
Mar 7/5
Dall'albero di parsing all'AST
18
Ven 10/5
Traduzioni orientate ai dati
[DAR 8]; H18
19
Mar 14/5
Traspilazione (verso Javascript e l'AST di Python)
20
Ven 17/5
Symbol table (e scoping)
ICD 3; [DAR 8.4; MCD 2.11]: H20
21
Mar 21/5
Interpreti ricorsivi (e funzioni)
ICD 4; [MCD 6.1-2]; H21
22
Ven 24/5
Type checking (statico per tipi primitivi)
ICD 5; H22
23
Mar 28/5
Interpreti iterativi (code threading e VM a pila)
MCD 5.1, 6.3
24
Ven 31/5
Generazione di codice (con l'IR di LLVM)
ICD 6.1-6
Nota bene
Accanto a ciascun riferimento che reca un numero di capitolo possono trovarsi dei numeri di sezione essi sono da intendersi nel seguente modo:
se assenti: l'intero capitolo è parte del programma (ad esempio, con "TPT 5" si intende l'intero capitolo 5 di The Python Tutorial),
se presenti (fuori parentesi): solo le sezioni indicate sono parte del programma (ad esempio, con "PT 2 1-4, 9" si intende che del capitolo 2 di Parsing Techniques. A Practical Guide sono strettamente parte del programma solo le sezioni 1, 2, 3, 4 e 9),
se presenti tra parentesi quadre: le sezioni indicate sono letture caldamente raccomandate, ma facoltative (ad esempio con "PT 2 [5-8, 10-12]" si intende che del capitolo 2 di Parsing Techniques. A Practical Guide è consigliata la lettura delle sezioni 5, 6, 7, 8, 10, 11 e 12).