Lezione n. 1 - Tuesday 22 September
2009 |
- Presentazione del corso
Presentazione del corso
|
Lezione n. 2 - Thursday 24 September
2009 |
- (Laboratorio 1) Richiami di architettura del calcolatore. Gestione
dinamica della memoria. Classificazione degli errori di accesso alla
memoria. Motivazioni per disciplinare gli accessi alla memoria. Java.
Interpreti e compilatori. Portabilita' del codice. Opzioni del compilatore
C. Introduzione alle classi nella programmazione object oriented.
|
Lezione n. 3 - Friday 25 September
2009 |
- Algoritmo formale che decide un problema. Problemi di decisione,
Concetto di Semidicidibilita'. Monoide libero delle parole di un certo
alfabeto.
Automa a stati finiti. Algoritmo associato ad un automa astati finiti.
Insiemi Regolari. Automa che riconosce li insieme delle parole esteso con
un carattere.
|
Lezione n. 4 - Tuesday 29 September
2009 |
- Proprieta' di chiusura degli automi finiti. Concatenazione. Unione.
Complemento. Espressioni Regolari
Definizione di automa finito non-deterministico. Algoritmo associato ad un
automa non-determiistico. Automi con epsilon-mosse. Equivalenza tra NFA e
DFA. Espressioni regolari.
|
Lezione n. 5 - Thursday 1 October
2009 |
- (Laboratorio 2) Definizioni di classi. Metodi costruttori. Definizione
di tipi di dato astratti. Costruttori di liste: emptylist, append.
Implementazione di una classe. Compilazione di classi. Esecuzione di Java
bytecode. Metodo main.
|
Lezione n. 6 - Friday 2 October 2009 |
- Automi Non deterministici. Traduzione di un NFA in DFA. Equivalenza tra
insiemi decidibili con NFA e con espressioni regolari.
Macchine RAM. Algoritmo formale associato ad una macchina RAM.
|
Lezione n. 7 - Thursday 8 October
2009 |
- (Laboratorio 3) Attributi e metodi con qualificatore static e final.
Incaplsulamento di classi.
Chiamate ricorsive a metodi. Terminato l'esempio delle liste.
|
Lezione n. 8 - Friday 9 October 2009 |
- Definizione di Macchina di Turing. Definizione di algoritmo associato ad
una macchina di Turing. Decidibilita` per macchina di Turing.
Semidicibilita' per macchina di Turing.
Funzioni computabili per macchina di Turing. Concetto di Computazione
associata ad un input. Considerazioni sulla cardinalita' di insiemi
decidibili per macchina di Turing.
|
Lezione n. 9 - Tuesday 13 October
2009 |
- Definizione del tempo di arresto di una macchina di Turing. Definizione
di spazio di arresto. Definizione di complessita'.
Classe di complessita' polinomiale. Caso della complessita' lineare.
Separazione tra le classi DTIME(n^2) e DTIME(c n). Pumping-lemma per le
macchine con tempo di arresto lineare.
|
Lezione n. 10 - Thursday 15 October
2009 |
- (Laboratorio 4) Metodi e classi astratte. Definizione dei costruttori.
Derivazione di classi. Concetto della inheritance. Creazione di istanze di
classe.
|
Lezione n. 11 - Friday 16 October
2009 |
- Esempi di applicazione del Pumping-lemma.
Decidibilita' dell'insieme 0^p 1^p in tempo c n log(n)
|
Lezione n. 12 - Tuesday 20 October
2009 |
- Definizione ed esempi di simulazioni tra algoritmi.
Equivalenza tra macchine a seminastro e macchine mononastro. Costo della
simulazione.
|
Lezione n. 13 - Thursday 22 October
2009 |
- (Laboratorio 5) Classi astratte; esempio di liste di oggetti eterogenei.
Implementazione del crivello di Eratostene ad oggetti.
|
Lezione n. 14 - Friday 23 October
2009 |
- Definizione di macchina multinastro. Algoritmo associato ad una macchina
multinastro. Vantaggi nell'esecuzione.
Teorema di simulazione di una macchina multinastro con una mononastro.
Valutazione del costo computazionale nella simulazione.
|
Lezione n. 15 - Tuesday 27 October
2009 |
- Cambiamenti di alfabeto. Proprieta' prelimiari al Teorema di Speedup.
Cambiamenti di alfabeto nelle macchine di Turing. Complessita'.
|
Lezione n. 16 - Thursday 29 October
2009 |
- Automi Finiti, applicazioni ed esercizi.
Macchine di Turing e complessita': applicazioni ed esercizi.
|
Lezione n. 17 - Tuesday 10 November
2009 |
- Classi di complessita' indipendenti dall'alfabeto e dal numero di
nastri.
Macchine di Turing speciali (alfabeto A={1}, autoconfinate nel seminastro
positivo). Equvalenza tra macchine di Turing e macchine di Turing speciali.
Costo della complessita' della simulazione.
|
Lezione n. 18 - Thursday 12 November
2009 |
- (Laboratorio 6)Implementazione OOP del crivello di Eratostene.
Classi astratte. Derivazione di classi astratte. Overloading di
costruttori.
|
Lezione n. 19 - Friday 13 November
2009 |
- Rappresentazione dei numeri naturali in base 1 e in base >1.
Decidibilita' di un insieme numerico. Indipendenza della decidibilita'
dalla base scelta.
Complessita` di un insieme numerico, relazione di complessita' in funzione
della base.
|
Lezione n. 20 - Tuesday 17 November
2009 |
- Definizione della classe delle funzioni ricorsive. Definizione di
computabilita'. Equivalenza tra computabilita' e decidibilita' della
funzione caratteristica del grafico della funzione (nel caso delle funzioni
totali).
Equivalenza tra funzioni parziali Turing computabili e semidecidibilita'
del grafico della funzione. Funzioni ricorsive; funzioni base: successore,
predecessore, funzione costante e funzione proiezione; schema di
ricorsione, composizione, concatenazione e minimalizzazione.
|
Lezione n. 21 - Thursday 19 November
2009 |
- Ogni funzione computabile e' anche ricorsiva.
Codifica delle macchine di Turing nelle funzioni ricorsive: la funzione di
transizione associata ad un macchina di Turing e' una funzione ricorsiva.
|
Lezione n. 22 - Thursday 26 November
2009 |
- Teorema di equivalenza tra funzioni computabili e funzioni ricorsive:
codifica della configurazione di input a partire dall'n-upla di interi
rappresentata.
Aritmetizzazione dello spazio delle configurazioni di una macchina di
Turing.
|
Lezione n. 23 - Thursday 3 December
2009 |
- Teorema di equivalenza tra funzioni computabili e funzioni ricorsive.
Funzioni ricorsive primitive. Funzioni ricorsive totali. Funzione di
Ackermann.
|
Lezione n. 24 - Friday 4 December
2009 |
- Funzioni ricorsive. Applicazioni. Funzioni definite per casi su domini
ricorsivi. Caso delle funzioni parziali.
Lambda Calcolo: funzioni sulle variabili: variabli libere, variabili
legate, lunghezza di un lambda-termine. Induzione strutturale. Grafo
sintattico di un lambda-termine.
|
Lezione n. 25 - Thursday 10 December
2009 |
- (Laboratorio 7) Attributi e metodi di classe (static). Implementazione
del crivello di Eratostene (versione distribuita).
Definizione di array di oggetti. Ancora sulla visibilita' di metodi
(public/private).
|
Lezione n. 26 - Friday 11 December
2009 |
- Definizione di lambda termini. Lemmi preliminari sulla sostituzione.
Alfa equivalenza. Relazioni che passano al contesto. L'alpha equivalenza
passa al contesto.
Proprieta' di Church-Rosser. La chiusura transitiva di una relazione
Church-Rosser e' Church-Rosser. Definizione di sostituzione. Definizione di
beta-riduzione. Proprieta' della beta riduzione.
|
Lezione n. 27 - Tuesday 15 December
2009 |
- Confluenza dell beta conversione. Proprieta' di Church-Rosser. unicita'
della Forma Normale.
Esempi di riduzione.
|
Lezione n. 28 - Thursday 17 December
2009 |
- Beta equivalenza. Forma normale dei lambda termini.
Utilizzo del lambda calcolo come dispositivo computazionale astratto.
|
Lezione n. 29 - Friday 18 December
2009 |
- Strategie di riduzione. Riduzione di testa. Riduzione sinistra.
Strategie normalizzanti. Alberi di Bohm.
Forma normale di testa. Risolubilita' di lambda termini.
|
Lezione n. 30 - Tuesday 22 December
2009 |
- Codifica dei booleani; rappresentazione delle funzioni ricorsive di
base; rappresentazione della composizione;
Rappresentazione della minimalizzazione. Operatori di punto fisso nel
lambda calcolo; teoremi di esistenza.
Rappresentazione di altri tipi di dato nel lambda calcolo: booleani,
coppie, liste.
Risoluzione di equazioni ricorsive mediante uso di operatori di punto
fisso.
|