L'insegnamento introduce il tipo di dato, controparte teorica del modulo software, costituito da valori e operazioni; introduce strutture dati e algoritmi che implementano, in modo non unico, un tipo di dato. Insegna a valutare la complessita' spaziale e temporale di un'implementazione. Introduce la programmazione orientata a oggetti ed usa il linguaggio Java per implementare tipi di dato classici (pila, coda, dizionario) ed algoritmi per il problema dell'ordinamento.
Introduzione a: tipi di dato; algoritmi, strutture dati e valutazione della loro complessità; programmazione orientata a oggetti sull'esempio del linguaggio java; implementazione di tipi di dato in java.
Essere in grado di implementare un tipo di dato scegliendo le strutture dati e gli algoritmi opportuni attraverso un'analisi della complessita' delle varie possibili scelte implementative. Conoscere tipi di dato classici (pila, coda, dizionario) e loro implementazioni. Conoscere gli algoritmi di ordinamento classici e loro valutazione. Conoscere la programmazione object-oriented ed il linguaggio Java.
L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro. Ci sono tre lezioni alla settimana di due ore ciascuna. Nella settimana-tipo, una lezione e' in aula, una in laboratorio, una e' in aula o in laboratorio secondo come richiesto dal flusso degli argomenti trattati.
Tipo di dato astratto. Dall'operazione all'algoritmo, dal tipo alla struttura dati. Complessita' spaziale e temporale. Tipi di dato pila e coda, tipo di dato dizionario e varie implementazioni. Algoritmi di ordinamento. Paradigma di programmazione object-oriented e linguaggio Java. Classi e oggetti, uguaglianza e copia di oggetti, costruttori, clientship, ereditarietà, overriding, eccezioni. Implementazione di tipi di dato in Java.
Appunti del corso (in italiano). Manuale e tutorial di Java on-line (in inglese). Libro: M.T.Goodrich, R.Tamassia, Data structures and algorithms in Java, John Wiley & Sons (in inglese), Strutture dati e algoritmi in Java, Zanichelli (traduzione italiana).
Ricevimento: Su appuntamento.
PAOLA MAGILLO (Presidente)
ELENA ZUCCA (Presidente)
DAVIDE ANCONA
In accordo con il calendario accademico approvato dal Consiglio di Corsi di Studi.
PROGRAMMAZIONE 2
L'esame consiste di una prova pratica in laboratorio e un orale. Di norma le due parti sono mattina e pomeriggio dello stesso giorno e costituiscono un'unita' inscindibile. Per dettagli vedere "Modalita' di accertamento".
La prova di laboratorio richiede di scrivere, o modificare, codice che implementi varianti di algoritmi o strutture dati visti nel corso. L'orale consiste in domande sul programma e puo' includere la scrittura di esempi in codice o pseudocodice. Puo' includere una discussione di quanto fatto nella prova pratica. Alla fine delle lezioni verranno dati esempi di prova di laboratorio con soluzioni.
Prerequisiti: Programmazione 1