Università di Pisa
Anno Accademico 2009-10
docente: prof. Marco Bellia
AVVISO: Appello III in programma per il giorno 11.6.2010 è stato spostato a Mercoledì 16.6.2010 Aula C ora 15.00. Nella stessa aula e con stesso orario si svolgerà la prova scritta dell'appello III di programmazione II B e la prova scritta dell'appello straordinario di Metodologie di Programmazione,
calendario compitini:
|
settembre 21 |
|
settembre 23 |
macchine astratte, compilazione, interpretazione e run-time support |
settembre 29 |
macchine astratte: relazione tra sintassi, semantica, esecutore (vedi sopra) + esercizio&soluzione |
ottobre 1 |
Semantica Operazionale: Sintassi Astratta, Domini Sintattici, Domini Semantici in un Linguaggio Imperativo |
ottobre 6 |
Semantica Operazionale: Funzioni semantiche per un Linguaggio Imperativo + esercizio |
ottobre 8 |
Ocaml-1 : Un linguaggio per specifica e semantica eseguibile + esercizi - Files allegati: Domini Sintattici Domini Semantici Funzioni Semantiche |
ottobre 13 |
Ocaml-2 : il nucleo imperativo, moduli e classi + esercizi: Moduli - Soluz. 1 2 3 Dati-1: descrittori, tipi, sistemi di tipi, tipi statici e dinamici. |
ottobre 15 |
Dati-1: Sintassi (astratta - specifica), Semantica (algebrica), Implementazione. + esercizi: Implementazione di Pila non modificabile - Soluzione |
| ottobre 20 | Dati-2: Sintassi (astratta - specifica), Semantica (algebrica), Implementazione: Liste e Heap |
| ottobre 22 | Dati-3: Strutture modificabili: Sintassi (astratta - specifica), Semantica (algebrica), Implementazione. S-espressioni |
| ottobre 27 | Strutture di controllo . Parte1: Controllo nella valutazione di espressioni - Semantica: domini sintattici e semantici di un linguaggio di espressioni pure. Dalla semantica alla realizzazione di un interprete iterativo: Operazioni primitive |
| ottobre 29 | Strutture di controllo. Parte2: Dalla semantica alla realizzazione di un interprete iterativo: le strutture del Run Time Support - Stack continuazioni e Stack operandi - il ciclo di interpretazione |
| novembre 3 | interruzione prove intermededie corsi semestralizzati |
| novembre 5 | Strutture di controllo. Parte3: Controllo di sequenza e comandi - Semantica: domini sintattici e semantici di un linguaggio Imperativo con espressioni pure. Estendiamo l'interprete funzionale: Le nuove strutture del Run Time Support - Continuazioni e Store - Il ciclo di interpretazione. |
| novembre 10 | Programmazione in Java - dott. Michele Albano |
| novembre 12 | Blocchi, Ambienti globali, locali, non locali. Parte2. Linguaggio funzionale puro: Interprete. Blochi in linguaggi imperativi: Let e blocchi - sintassi e semantica operazionale. Le strutture dell'interprete: record di attivazione - envstack, cstack, tempvalstack, tempdvalstack, storestack, labelstack. Le procedure dell'interprete: loop, itsem, itsemden, itsemcl, itsemdecl . |
| novembre 17 | Programmazione in Java - dott. Michele Albano |
| novembre 19 | Programmazione in Java - dott. Michele Albano |
| novembre 24 | Programmazione in Java - dott. Michele Albano |
| novembre 26 | Programmazione in Java - dott. Michele Albano |
| dicembre 1 | Funzioni, Funzioni ricorsive, parametri: Semantica operazionale con scoping statico, e con scoping dinamico. Funzioni definite ricorsione: Estensioni della semantica. Interprete. |
| dicembre 3 | Funzioni, Funzioni ricorsive, parametri: Interprete per scoping dinamico. Regole di scoping: confronti (storia e vantaggi dei due). Linguaggi che non richiedono regole di scoping: Java Esercizio (di esame): Sintassi concreta, astratta, interpretazione e calcolo dei record di attivazione (testo-sol. parziale completa.pdf) |
| dicembre 5 | Programmazione in Java - dott. Michele Albano |
| dicembre 10 | Programmazione in Java - dott. Michele Albano |
| dicembre 15 | Programmazione in Java - dott. Michele Albano |
| dicembre 18 | Aula E: prima prova intermedia a.a. 2009-10 - (template.pdf con la struttura di un record di attivazione*) |
| febbraio 22 | Procedure, Procedure e Funzioni mutuamente ricorsive, parametri: Strutture e domini sintattici. Regole di Scoping. Domini semantici. Semantica Operazionale (lucidi) |
| febbraio 23 | Procedure, Procedure e Funzioni mutuamente ricorsive, parametri: Interprete e strutture RTS. Un linguaggio Imperativo, il suo interprete, un esempio di programma e la sua esecuzione.zip |
| marzo 1 | Oggetti e Classi: Oggetti come ambienti permanenti (ambiente locale statico) ad accesso multiplo. Classi, costruttori e parametri per la creazione (inizializzazione) di istanze diverse. Oggetti, self reference e definizioni mutuamente ricorsive. Oggetti, tipi astratti e definizioni di strutture dati dinamiche. Ereditarietà. Relazioni con Java: analogie e differenze. Struttura di un linguaggio Object Oriented. La sintassi e i suoi domini. I domini semantici: La memoria Heap e le sue locazioni Pointer, Il dominio dei valori e i valori Obj e Class. Lucidi (1-16) |
| marzo 2 | Oggetti e Classi - Struttura di un linguaggio Object Oriented: Funzioni ausiliarie per la costruzioni dei valori di Class e e la loro applicazione per il calcolo di valori Obj. Semantica Operazionale: Estendiamo la funzione Sem con le nuove espressioni (new, this e Field), Modifichiamo le funzioni Semb e Semdl. Lucidi (17-24) |
| marzo 8 | Oggetti e Classi - Struttura di un linguaggio Object Oriented: Un esempio con ereditarietà. Eliminazione della ricorsione (Lucidi 25-28) - facoltativo: estendiamo l'interprete (29-36). Esercizio: Implementazione delle funzioni semantiche e Applicazione all'esecuzione di un programma. .zip |
| marzo 15 | Trasmissione dei parametri: Altre tecniche: passaggio per nome - Semantica Operazionale (domini e funzioni semantiche). Trasmissione in Lisp: tecnica del Funarg e Chiusure (funzionali). Passaggio per Valore: ruolo della memoria e update locazione valore memorizzabile. Una (differente) Semantica Operazionale nella trasmissione per valore (domini e funzioni semantiche). Trasmissione Value-Result. Lucidi (13-23) Esercizio: Trasmissione Value-Result - Semantica Operazionale (domini e funzioni semantiche). |
| marzo 22 | Ambienti Rivisitati: Tecniche di implementazione a catena di ambienti locali. Catena statica e catena dinamica. Valori funzionale e Retention di ambienti. Una struttura a cinque componenti <namestack,evalstack,tagstack,slinkstack,currentenv> per l'ambiente e implementazione delle operazioni applyenv, bind e bindlist. Modifiche sull'interprete iterativo (linguaggio funzionale). Lucidi (1-18) Esercizio: Un programma funzionale che richiede retention dell'ambiente (programma: sintassi concreta e astratta ) e la nuova struttura di record di attivazione prodotta dalla sua esecuzione (sequenza di records di attivazione) |
| aprile 13 | Esercizi: Ambiente statico e Ambiente dinamico. Scoping statico e Scoping dinamico. Java: Ambiente statico e scoping statico. Lisp: Ambiente dinamico e scoping dinamico. Haskell, OCaml: Ambiente dinamico, scoping statico. |
| aprile 19 | Metodologie di Programmazione - Astrazioni: Generalizzazione e Trasparenza. Le diverse forme di astrazione presenti in Java. Astrazioni procedurali in Java: Specifica e implementazione. Dalla Specifica all'implementazione attraverso la metodologia D&A (decomponi e astrai). Specifica in Java: Overview per classi e Header+Requires+Modifies+Effects per metodi. Lucidi |
| aprile 26 | Metodologie di Programmazione: Definizione di nuovi tipi di dati. Dati strutturati e non. Dati concreti e Astrazioni di dato. Records in Java: Il tipo cocreto coppia e il tipo astratto coppia Lucidi (1-9) |
| maggio 3 | Metodologie di Programmazione: Astrazioni di dati. Specifica, presentazione, rappresentazione e implementazione. Una metodologia. La funzioni AF e l'invariante I. Esempi: IntSet, PolyInt, IntStack. IntSet: tre stai concreti per rappresentare e le funzioni AF ed I corrispondenti. Derivare l'implementazione dalla specifica, e dalla scelta dello stato di rappresentazione. Lucidi (10-22) |
| maggio 10 | Metodologie di Programmazione: Astrazioni di dati. Ragionare sulle astrazioni di dati e provare I, provare AF, metodi additionals equals, clone e toString per valori mutable e per valori immutable. Benevolent side effects. Lucidi (22-33) |
| maggio 17 | Metodologie di Programmazione: Esercizio StringIntFun
|
| maggio 25 | Aula A,E (ore 14:00): seconda prova intermedia a.a. 2009-10 (template2.pdf con la struttura di un record di attivazione e ambiente con retention*) |
* è possibile fare uso dei templates in luogo dei fogli protocollo. In questo caso consiglio di presentarsi con almeno 6/7 copie della pagina scaricata.
verifica1 |
Testo |
esito |
Soluzione (ex1-2) |
verifica2 |
esito |
appello III: testo esito - Orali (iscrizione non richiesta) prima data utile: giovedì ore 15.30 in aula Seminari Ovest (Dipartimento)
appello V: testo esito - Orali (iscrizione richiesta) vedi esito