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.
DataArgomenti 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:

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