CODICE 48382 ANNO ACCADEMICO 2017/2018 CFU 7 cfu anno 2 MATEMATICA 9011 (LM-40) - 7 cfu anno 2 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI 8766 (L-35) - 7 cfu anno 3 MATEMATICA 8760 (L-35) - SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE 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. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI 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. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO 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. MODALITA' DIDATTICHE 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. PROGRAMMA/CONTENUTO 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. TESTI/BIBLIOGRAFIA 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). DOCENTI E COMMISSIONI PAOLA MAGILLO Ricevimento: Su appuntamento. Commissione d'esame PAOLA MAGILLO (Presidente) ELENA ZUCCA (Presidente) DAVIDE ANCONA LEZIONI INIZIO LEZIONI In accordo con il calendario accademico approvato dal Consiglio di Corsi di Studi. Orari delle lezioni PROGRAMMAZIONE 2 ESAMI MODALITA' D'ESAME 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". 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. Calendario appelli Data appello Orario Luogo Tipologia Note 11/01/2018 15:00 GENOVA Laboratorio 01/02/2018 15:00 GENOVA Laboratorio 05/06/2018 15:00 GENOVA Laboratorio 23/07/2018 15:00 GENOVA Laboratorio 17/09/2018 15:00 GENOVA Laboratorio ALTRE INFORMAZIONI Prerequisiti: Programmazione 1