Corso di Linguaggi di Programmazione
Calendario lezioni A.A. 2012/2013
Il materiale messo a disposizione in questa pagina NON sostituisce il libro di testo ma svolge solo una funzione di supporto alle lezioni del corso.E' disponibile anche il materiale relativo all'A.A. 2006/2007, il materiale relativo all'A.A. 2007/2008, il materiale relativo all'A.A. 2008/2009 ed il materiale relativo all'A.A. 2012/2013.
Data | Argomenti | Slide | Capitolo libro | Materiale integrativo | |
---|---|---|---|---|---|
1 | 26.09.2017 | Informazioni generali sulla struttura del corso e sulle modalità di esame; obiettivi: perchè studiare i linguaggi di programmazione; la nascita dei linguaggi di programmazione; principali caratteristiche e criteri per la valutazione di un linguaggio di programmazione; i costi legati alla scelta di un linguaggio di programmazione. | lez1 | Sebesta Cap. 1 e 2 | - |
2 | 27.09.2017 | 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 | - | Dispense Calcolabilità (P. Bonatti) e Informatica teorica (S. Vigna) |
3 | 03.10.2017 | Programmazione funzionale. Pensare ricorsivo. Introduzione a Scheme. | lez3 | Sebesta Cap. 15 | Esempi in C di programmi che utilizzano costrutti iterativi e relativa versione ricorsiva. |
4 | 04.10.2017 | Scheme: definizione di valori e funzioni; il funzionamento dell'interprete, definizione, gestione e rappresentazione interna di liste; esercizi. | lez4 | Sebesta Cap. 15 | |
5 | 10.10.2017 | Funzioni come oggetti di prima classe; Programmazione funzionale in Scheme e Python; esercizi. | lez5 | Sebesta Cap. 15, Python Primer | Codice scritto a lezione ed altri esempi. |
6 | 11.10.2017 | Primitive per programmazione funzionale. Algoritmi di ordinamento con programmazione funzionale. (dr. M. Casazza) | lez6 | Sebesta Cap. 15 | Codice scritto a lezione ed altri esempi. |
7 | 17.10.2017 | Functional freaks; esercizi. | lez7 | Sebesta Cap. 15 | Codice scritto a lezione ed altri esempi. |
8 | 18.10.2017 | Ricorsione ed efficienza; esercizi. | lez8 | Sebesta Cap. 15 | Codice scritto a lezione ed altri esempi. |
9 | 24.10.2017 | Programmazione dichiarativa, programmazione logica e programmazione in Prolog. Richiami di calcolo predicativo, algoritmo di resolution. Funzionamento di un interprete Prolog. L'ambiente SWI. | lez9 | Sebesta Cap. 16 (fino 16.6.5) | Esempi AMPL e Prolog. |
10 | 25.10.2017 | Meccanismo di Unification. Programmazione in Prolog: liste, ricorsione, pattern matching. Definizioni ricorsive ed implementazione Prolog di operazioni su liste. Implementazione di controlli di tipo in Prolog. Variabili intere ed operatori aritmetici. Esercizi. | lez10 | - | Alcuni esempi generici e di operazioni su liste. |
11 | 31.10.2017 | ||||
12 | 07.11.2017 | ||||
13 | 08.11.2017 | ||||
14 | 14.11.2017 | ||||
15 | 15.11.2017 | ||||
16 | 21.11.2017 | ||||
17 | 22.11.2017 | ||||
18 | 28.11.2017 | ||||
19 | 05.12.2017 | ||||
20 | 06.12.2017 | ||||
21 | 12.12.2017 | ||||
22 | 13.12.2017 | ||||
23 | 19.12.2017 | ||||
24 | 20.12.2017 |
Materiale relativo all' AA 2012/2013:
Data | Argomenti | Slide | Ver. Stamp. | Capitolo libro | Materiale integrativo | |
---|---|---|---|---|---|---|
1 | 27.02.2013 | Informazioni generali sulla struttura del corso e sulle modalità di esame; obiettivi: perchè studiare i linguaggi di programmazione; la nascita dei linguaggi di programmazione; principali caratteristiche e criteri per la valutazione di un linguaggio di programmazione; i costi legati alla scelta di un linguaggio di programmazione. | lez1 | Sebesta Cap. 1 e 2 | - | |
2 | 01.03.2013 | 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 | - | Dispense Calcolabilità (P. Bonatti) e Informatica teorica (S. Vigna) | |
3 | 05.03.2013 | Programmazione funzionale. Introduzione a Scheme. | lez3 | Sebesta Cap. 15 | Esempi in C di programmi che utilizzano costrutti iterativi e relativa versione ricorsiva. | |
4 | 05.03.2013 | Scheme: definizione di valori e funzioni; il funzionamento dell'interprete, definizione, gestione e rappresentazione interna di liste; esercizi. | lez4 | Sebesta Cap. 15 | ||
5 | 12.03.2013 | Funzioni come oggetti di prima classe; Programmazione funzionale in Scheme e Python; esercizi. | lez5 | Sebesta Cap. 15, Python Primer | Codice scritto a lezione ed altri esempi. | |
6 | 12.03.2013 | Functional freaks, ricorsione ed efficienza, side effects in Scheme; esercizi. | lez6 | Sebesta Cap. 15 | Codice scritto a lezione ed altri esempi. | |
7 | 19.03.2013 | Programmazione dichiarativa, programmazione logica e programmazione in Prolog. Richiami di calcolo predicativo, algoritmo di resolution. Funzionamento di un interprete Prolog. L'ambiente SWI. | lez7 | Sebesta Cap. 16 (fino 16.6.5) | Esempi AMPL e Prolog. | |
8 | 19.03.2013 | Meccanismo di Unification. Programmazione in Prolog: liste, ricorsione, pattern matching. Definizioni ricorsive ed implementazione Prolog di operazioni su liste. Implementazione di controlli di tipo in Prolog. Variabili intere ed operatori aritmetici. Esercizi. | lez8 | - | Alcuni esempi generici e di operazioni su liste. | |
9 | 09.04.2013 | Esercitazione: Algoritmi di ordinamento in Scheme e Prolog (dr. M. Casazza). | - | - | ||
10 | 09.04.2010 | Esercitazione: Derivazione simbolica in Scheme e Prolog (dr. M. Casazza). | - | - | - | - |
11 | 16.04.2010 | Cut, controllo ed efficienza. Il problema della negazione; invertibilità dei predicati. Accumulatori. Il paradigma generate-and-test. difference-lists (cenni). | lez11 | - | Alcuni esempi di programmi Prolog; predicati per l'output a video. | |
12 | 16.04.2013 | Esercitazione: il problema delle n regine (dr. M. Casazza). | - | - | ||
13 | 23.04.2013 | Linguaggi e Linguaggi di Programmazione; Struttura lessicale, sintattica e semantica di un linguaggio di programmazione: significato, formalizzazione, analisi e contestualizzazione. Compilatori, interpreti e sistemi ibridi. | lez13 | Sebesta Cap. 3 | ||
14 | 23.04.2013 | Type system: controlli di tipo; Tipizzazione statica, dinamica, implicita ed esplicita; conversioni ed inferenza di tipo; tipizzazione forte, debole; linguaggi type safe ed unsafe; equivalenza e compatibilità tra tipi; esempi di type system. | lez14 | Sebesta Cap. 5.5 - 5.7, 6 e 7.4 | ||
15 | 30.04.2013 | Organizzazione della memoria; Attributi di una variabile; Binding: il concetto di binding, binding time, storage binding, lifetime. Scoping: sottoprogrammi e record di attivazione, scoping statico e dinamico. Passaggio di parametri a sottoprogrammi. | lez15 | Sebesta Cap. 5.1 - 5.4, 5.8 - 5.10, 9.4 - 9.5 e 10.1 - 10.5 | ||
16 | 30.04.2013 | Il concetto di astrazione; Abstract Data Types; Esempio: realizzazione ADT Stack in diversi linguaggi. | lez16 | Sebesta Cap. 11 tranne 11.5 | ADT stack. | |
17 | 07.05.2013 | Polimorfismo parametrico e ADT parametrici; esempi. | lez16 | Sebesta Cap. 9.8 e Cap 11.5 | Esempi: ADT con tipi parametrici. | |
18 | 07.05.2013 | Programmazione orientata agli oggetti: introduzione, il meccanismo dei sottotipi e delle sottoclassi, implementazione di overriding ed ereditarietà singola e multipla, binding dinamico, type checking e polimorfismo; membri statici. Supporto all'object orientation in C++, Java e C#. | lez18 | Sebesta Cap. 12 (escluso 12.9) | Esempi: programmazione ad oggetti parte 1 e parte 2. | |
19 | 14.05.2013 | Generic programming: principi generali, containers, iterazione generica. Type upper bounds. Il concetto di Reflection. | lez19 | Implementazione ed utilizzo di una semplice classe iteratore in Python . Tutorial su generics in Java ed in C sharp , ed un confronto. | ||
20 | 14.05.2013 | Supporto per la programmazione concorrente (prima parte). Supporto hardware e da parte del sistema operativo (ripasso). Coroutines. | lez20 | Sebesta Cap 13, 9.11 | ||
21 | 21.05.2013 | Concorrenza a livello di sottoprogrammi: semafori e monitor. Esempi Java, concurrent Pascal e ADA. ; comandi con guardia, scambio di messaggi sincrono e asincrono; | lez21 | Sebesta Cap 13.3 - 13.5 | Esempi: monitor in concurrent Pascal , tasks e problema del produttore-consumatore in ADA. | |
22 | 21.05.2013 | Esercitazione: programmazione orientata agli oggetti e gestione della concorrenza in Java. | lez22 | Threads e sincronizzazione in Java; esempio di problema produttore-consumatore in Java utilizzando notify e notifyAll , codice sviluppato in aula e versione con eliminazione attesa semi-attiva . | ||
23 | 28.05.2013 | Gestione della concorrenza in C#, cenni sulla gestione della concorrenza in Python; Concorrenza a livello di istruzioni. La gestione delle eccezioni; programmazione event-driven. | lez23 | Sebesta Cap 14 | ||
24 | 28.05.2013 | Esercitazione. Programmare ad oggetti in python; scambio di messaggi con socket in python (dr. M. Casazza). | Codice dell'esercitazione commentato |
Per favore, segnalate eventuali errori od omissioni nelle slide.
Corso di Linguaggi
di Programmazione | Copyright © 2008