Calendario lezioni A.A. 2007/2008


N.B. il materiale è stato rimosso dal sito, ma è disponibile su richiesta, inviando una email ai docenti.
DataArgomenti Slide Ver. Stamp. Capitolo libroMateriale integrativo
1 25.2.2008 Informazioni generali sulla struttura del corso e sulle modalità di esame; obiettivi: perchè studiare i linguaggi di programmazione; breve storia dell'evoluzione dei linguaggi di programmazione: FORTRAN, ALGOL e linguaggi imperativi, LISP ed i linguaggi funzionali, PROLOG ed i linguaggi dichiarativi ...; principali caratteristiche e criteri per la valutazione di un linguaggio di programmazione; i costi legati alla scelta di un linguaggio di programmazione. lez1 ver.stamp. Sebesta Cap. 1 e 2, Ghezzi Jazayeri Cap. 1.4 e 1.5 -
2 26.2.2008 Controlli automatici di correttezza dei programmi: verificatore della terminazione di un programma e del corretto utilizzo degli indici in C; Macchine di Turing, Goedelizzazione e Turing-equivalenza; Funzioni parziali ricorsive, funzione parziale "inversione" e funzione "arresto"; tesi di Church lez2 ver.stamp. - Dispense Calcolabilità (P. Bonatti) e Informatica teorica (S. Vigna)

3 3.3.2008 Sintassi dei linguaggi di programmazione. Grammatiche: definizione e classificazione di Chmosky; Backus-Naur form. lez3 ver.stamp. Sebesta Cap. 3 fino a 3.3.1.6 -
4 4.3.2008 Grammatiche libere da contesto e BNF: derivazioni canoniche;alberi di derivazione; problema dell'ambiguità di una grammatica. Forma BNF ed Extended BNF. Compilazione e interpretazione di un linguaggio di programmazione. Fasi di un compilatore: analisi lessicale e sintattica. lez4 ver.stamp. Sebesta Cap. 3 da 3.3.1.6 a 3.4, Cap. 4 sez. 4.1 e 4.2 -
5 10.3.2008 Semantica dei linguaggi di programmazione: semantica statica e semantica dinamica. Grammatiche ad attributi: definizione, classificazione degli attributi, regole semantiche da associare alle regole di produzione. Cenni di semantica dinamica. Generatori automatici di analizzatori lessicali e sintattici: Lex e Yacc (Flex e Bison). lez5 ver.stamp. Sebesta Cap. 3, 3.4-3.5 Survey sulle grammatiche ad attributi e articolo di D.Knuth sulle origini delle gag.
6 11.3.2008 Semantica di alcuni costrutti di base dei linguaggi di programmazione: Nomi, variabili, associazioni (binding), campo di visibilità, tipi. Gestione della memoria. Classificazione delle variabili a seconda del tempo di allocazione in memoria. lez6 ver.stamp. Sebesta Cap. 5 -
7 17.3.2008 Tipo di dato. Equivalenza e compatibilità tra tipi. Linguaggi fortemente tipati. lez7 ver.stamp. Sebesta Cap. 6 -
8 31.3.2008 Abstract Data Types, esempio dello Stack lez8 ver.stamp. ADT stack. Sebesta Cap. 11 tranne 11.5 (Ghezzi Jazayeri Cap. 5.1 e 5.2)
9 1.4.2008 Polimorfismo parametrico e ADT parametrici; programmazione orientata agli oggetti: introduzione, il meccanismo dei sottotipi e delle sottoclassi, implementazione di overriding ed ereditarietà singola e multipla, esempi. lez9 ver.stamp. Sebesta Cap. 9.8, Cap 11.5 e parte Cap. 12 (Ghezzi Jazayeri Cap 6.1 - 6.3) Esempi: ADT con tipi parametrici, supporto alla programmazione ad oggetti.
10 14.4.2008 Programmazione orientata agli oggetti: binding dinamico, type checking e polimorfismo; membri statici. Supporto all'object orientation in C++, Java e C#. lez10 ver.stamp. Sebesta Cap. 12 (escluso 12.9) Esempi: programmazione ad oggetti .
11 15.4.2008 (cenni su generic programming). Supporto per la programmazione concorrente (prima parte). lez11 ver.stamp. Sebesta Cap 13.1 - 13.3, 9.11
12 21.4.2008 Supporto per la programmazione concorrente (seconda parte). lez12 ver.stamp. Sebesta Cap. 13.4 - 13.5 Esempi: concurrent Pascal , task e produttore - consumatore in ADA.
13 22.4.2008 La programmazione concorrente in Java e C sharp, concorrenza a livello di istruzioni, High Performance Fortran (esempi). lez13 ver.stamp. Sebesta Cap. 13.6 - 13.8 Esempi: Thread, sincronizzazione ed utilizzo di notify e notifyAll in Java.
14 29.4.2008 Gestione delle eccezioni. lez14 ver.stamp. Sebesta Cap. 14 Esempi in Java.
15 5.5.2008 Programmazione funzionale. Introduzione a Scheme. lez15 ver.stamp. Sebesta Cap. 15 Esempi.
16 12.5.2008 Scheme: definizione di funzioni, liste, forme speciali per il controllo di flusso. lez16 ver.stamp. Sebesta Cap. 15 Esempi dei vari costrutti.
17 13.5.2008 Scheme: funzioni di ordine superiore, lambda-expression, input/output. lez17 ver.stamp. Sebesta Cap. 15 -
18 19.5.2008 Programmazione dichiarativa, programmazione logica e programmazione in Prolog. Richiami di calcolo predicativo, algoritmo di resolution. Funzionamento di un interprete Prolog. L'ambiente SWI. lez18 ver.stamp. Sebesta Cap. 16 (fino 16.6.5) Esempi AMPL e Prolog.
19 26.5.2008 (Esempio di funzionamento di un interprete.) Programmazione in Prolog: liste, ricorsione, pattern matching. Definizioni ricorsive ed implementazione Prolog di operazioni su liste, esercizi. lez19 ver.stamp. - Alcuni esempi generici e di operazioni su liste.
20 27.5.2008 Programmazione in Prolog: controllo di tipi, variabili intere ed operatori aritmetici; invertibilità dei predicati; cut e problema della negazione; accumulatori ed efficienza; esercizi. lez20 ver.stamp. Sebesta Cap 16.6.5 - 16.8 (escluso) Esempi; predicati per l'output a video.

Per favore, segnalate eventuali errori od omissioni nelle slide.