Corso di Linguaggi di Programmazione
Calendario lezioni A.A. 2007/2008
N.B. il materiale è stato rimosso dal sito, ma è disponibile su richiesta, inviando una email ai docenti.
Data | Argomenti | Slide | Ver. Stamp. | Capitolo libro | Materiale 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.
Corso di Linguaggi
di Programmazione | Copyright © 2008