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

PT 1; TPT 3, TPT 4 1-6 e TPT 5; H01

2

Ven 1/3

Strutture dati ed algorimi elementari su alberi e grafi

H02

3

Mar 5/3

Ripasso su grammatiche e linguaggi

PT 2 1-4, [5-7], 9, [10-11]; H03

4

Ven 8/3

Generazione delle parole, alberi di parsing e derivazioni

PT 3 1; H04

5

Mar 12/3

Ambiguità (casi notevoli); introduzione al parsing

ICD 2 1-4; PT 3 2-3, 4.1-3, [4.4-5], 5.1-5, [8]; H05

6

Ven 15/3

Parsing, caso generale non direzionale (CYK)

PT 4 2.1-7; H06

7

Mar 19/3

Linguaggi regolari e automi a stati finiti

PT 5 1-5, [7-9]; H07a. H07b

8

Ven 22/3

Parsing top-down (NPDA, simulazione BF e DF)

PT 6 1-3, 5; H08

9

Mar 26/3

Recursive descent (con generazione automatica del parser)

PT 6 4, 6.1; H09

10

Ven 5/4

Parsing bottom-up (simulazione BF e DF)

PT 7 1; H10

11

Mar 9/4

Parsing deterministico Top-Down (LL)

PT 8 1-2.1; H11

12

Ven 12/4

PT 8 2.2-6; H12

13

Mar 16/4

H13

14

Ven 19/4

Parsing deterministico Bottom-Up (LR)

PT 9 5 - 5.3; H14

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

H17

18

Ven 10/5

Traduzioni orientate ai dati

[DAR 8]; H18

19

Mar 14/5

Traspilazione (verso Javascript e l'AST di Python)

H19

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