CODICE 48382 ANNO ACCADEMICO 2018/2019 CFU 7 cfu anno 2 MATEMATICA 9011 (LM-40) - GENOVA 7 cfu anno 2 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI 8766 (L-35) - GENOVA 7 cfu anno 3 MATEMATICA 8760 (L-35) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE L'insegnamento introduce: tipi di dato, controparte teorica del modulo software, costituiti da valori con le relative operazioni; strutture dati ed algoritmi che implementano, in modo non unico, un tipo di dato; tecniche per valutare la complessita' spaziale e temporale di un'implementazione; la programmazione orientata a oggetti ed il linguaggio Java. In particolare, si vedranno implementazioni di 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 complessita'; programmazione orientata a oggetti sull'esempio del linguaggio java; implementazione di tipi di dato in Java. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L'insegnamento introduce il concetto di tipo di dato (costituito da valori memorizzati e operazioni che vi agiscono); introduce le strutture dati che descrivono come organizzare la memorizzazione dei valori e gli algoritmi che esprimono i procedimenti per eseguire le operazioni; introduce esempi di tipi di dato (pila, coda, dizionario) con le loro implementazioni classiche e vari algoritmi per il problema dell'ordinamento. Parallelamente, l'insegnamento introduce alla programmazione orientata a oggetti sull'esempio del linguaggio Java, in modo da vedere subito in laboratorio l'applicazione pratica di quanto visto a lezione. Dopo aver seguito l'insegnamento, lo studente sara' 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. Conoscera' i tipi di dato classici (pila, coda, dizionario), gli algoritmi di ordinamento classici e le loro proprieta'. Conoscera' inoltre la programmazione object-oriented e sara' in grado di programmare in linguaggio Java. PREREQUISITI Conoscere i concetti basilari della programmazione con linguaggio imperativo: istruzione, variabile, ciclo, funzione, argomento, risultato, tipaggio delle variabili. Conoscere concetti matematici e logici di base: operazione, argomento, risultato, dominio, codominio, relazioni e proprieta' di cui possono godere (riflessiva, simmetrica, transitiva), operatori logici (and, or, not, implicazione). 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. Una parte delle ore di laboratorio sara' dedicata allo svolgimento di esercitazioni pratiche (un paio) che lo studente, consegnandole, potra' fare valere come sostitutivo della prova pratica d'esame (ved. modalita' di esame e di accertamento). 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. Dalla prova di laboratorio possono essere esentati gli studenti che hanno svolto e consegnato le esercitazioni durante l'anno. Le esercitazioni valgono per tutto l'anno accademico: lo studente puo' dare l'orale in qualunque appello e, nel caso fallisca, conserva le esercitazioni e deve ripetere soltanto l'orale. Lo studente che non ha fatto o che non intende avvalersi delle esercitazioni deve invece fare la prova di laboratorio. La prova di laboratorio vale solo per l'appello specifico: se lo studente fallisce l'orale, tornando a un appello successivo deve rifare anche la prova di laboratorio. MODALITA' DI ACCERTAMENTO Durante l'anno sono date un paio di esercitazioni pratiche individuali, che gli studenti possono consegnare e che consentono di accedere all'esame orale senza svolgere la prova di laboratorio. Queste esercitazioni hanno come oggetto l'implementazione di strutture dati e/o algoritmi spiegati a lezione. Ad esse sono dedicate alcune ore di laboratorio all'interno dell'orario dell'insegnamento. Prevedono la consegna del codice Java prodotto e di documentazione scritta; nella documentazione potra' essere chiesto non solo di spiegare ma anche di valutare l'implementazione realizzata. Sara' valutata la correttezza e la qualita' del codice e della documentazione. La prova di laboratorio dell'esame richiede di scrivere, o modificare, codice che implementi varianti di algoritmi o strutture dati visti nelle lezioni. 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 o nelle esercitazioni. Lo studente dovra' mostrare di aver compreso i concetti e di essere in grado di applicare le tecniche di analisi e di valutazione studiate. Calendario appelli Data appello Orario Luogo Tipologia Note 10/01/2019 14:00 GENOVA Laboratorio 31/01/2019 15:00 GENOVA Laboratorio 04/06/2019 09:00 GENOVA Laboratorio 03/07/2019 15:00 GENOVA Laboratorio 16/09/2019 15:00 GENOVA Laboratorio