Diario delle lezioni

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). Le lezioni si svolgono di norma dalle 11:30 alle 13:30.

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 MCD al libro Modern Compiler Design e quello indicato con DAR a The Definitive ANTLR 4 Reference; il materiale indicato come H si riferisce agli Handout del docente; 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 25/2

Obiettivi e struttura del corso

PT 1

2

Gio 28/2

Introduzione a Python

TPT 3; TPT 4 1-6; H 2

3

Mar 05/3

Strutture dati ed algoritmi di base per alberi e grafi

TPT 5; TPT 9 1-4; H 3

Vacanze di carnevale (1 lezione)

4

5

Mar 12/3

Gio 14/3

Grammatiche e linguaggi

PT 2 1-3; H 4

PT 2 1-4, 9 [5-8, 10-12]; H 5

6

7

Mar 19/3

Gio 21/3

Introduzione al parsing

PT 3 1, 2; H 6

PT 3 3, 4.1-3, 5.1-5, 8 [4.4-5, 9-10]

8

9

Mar 26/3

Gio 28/3

Parsing, caso generale non direzionale (CYK)

PT 4 2.1-2; H 8

PT 4 2.3-7; H 9

10

Mar 2/4

Linguaggi regolari e automi a stati finiti

PT 5 2-5 [1, 7, 8, 9]; H 10

11

12

13

Gio 4/4

Mar 9/4

Gio 11/4

Parsing Top-Down (Pushdown Automata, Recursive descent, Continuation)

PT 6 1-3, 5; H 11

PT 6 4, 6.1; H 12

PT 6 6.2; H 13

14

Mar 16/4

Parsing Bottom-Up

PT 7 1; H 14

Vacanze di Pasqua (3 lezioni)

Homework

15

16

Mar 30/4

Gio 2/5

Parsing deterministico Top-Down (LL)

PT 8 1 - 2.2.1 [4], MCD 3.4.1 - 3.4.6; H 15

PT 8 2.2.2 - 2.6 [5]; H 16

17

Mar 7/5

Parsing deterministico Bottom-Up (LR)

PT 9 5 - 5.3, 9.5.5 [6.3]; MCD 3.5.1 - 3.5.3; H 17

18

Gio 9/5

ANTLR

DAR 1 - 4; H 18

19

Mar 14/5

Alberi sintattici e loro annotazione

[MCD 4, 5]; H 19

20

Gio 16/5

Traduzioni (orientate ai dati)

H 20

21

Mar 21/5

Transpilatori (verso JavaScript e l'AST di Python)

DAR 8; H 21

22

Gio 23/5

Symbol table (scope di blocco e controllo dei tipi)

H 22

23

Mar 28/5

Interpreti ricorsivi (e funzioni)

[MCD 6]; H 23

24

Gio 30/5

Interpreti iterativi (code threading)

[MCD 7]; H 24


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).