CODICE 48382 ANNO ACCADEMICO 2019/2020 CFU 7 cfu anno 3 MATEMATICA 8760 (L-35) - GENOVA 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 1 MATEMATICA 9011 (LM-40) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE L'insegnamento introduce: Concetto di tipo di dato (valori + operazioni), implementazione, tecniche per valutare la complessita' di un'implementazione; Concetti fondamentali della programmazione orientata a oggetti. Linguaggi Java e Python con esercitazioni pratiche. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Introduzione a: tipi di dato; algoritmi, strutture dati e valutazione della mloro complessita'; programmazione orientata a oggetti; il linguaggio Java; il linguaggio Python; esercitazioni nei due linguaggi. 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) ed algoritmi classici. Parallelamente, l'insegnamento introduce alla programmazione orientata a oggetti e, come esempi, i linguaggi Java e Python, che permetteranno di vedere 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' inoltre la programmazione object-oriented e sara' in grado di programmare nei linguaggi Java e Python. 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, operatori logici. 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, di norma una in aula e due in laboratorio. L'insegnamento prevede lo svolgimento di due esercitazioni (rispettivamente in Java e in Python) che costituiscono parte della prova d'esame (ved. modalita' di esame e di accertamento). PROGRAMMA/CONTENUTO Tip di dato. Dall'operazione all'algoritmo, dal tipo alla struttura dati. Introduzione alla complessita' spaziale e temporale. Tipi di dato classici (pila, coda, dizionario). Alcuni algoritmi per problemi classici. Paradigma di programmazione object-oriented e linguaggio Java. Classi e oggetti, uguaglianza e copia di oggetti, costruttori, clientship, ereditarietà, overriding, eccezioni. Il linguaggio Python. Interprete interattivo, tipaggio dinamico, tipi contenitori (liste, tuple, dizionari) e operazioni, funzioni, classi, ereditarietà, eccezioni. Esercitazioni pratiche nei due linguaggi. 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 in: due esercitazioni pratiche da svolgere in gruppo (di due persone) e consegnare a fine corso, una prova orale. Le esercitazioni valgono per tutto l'anno accademico. MODALITA' DI ACCERTAMENTO Durante l'anno sono date due esercitazioni pratiche, aventi come oggetto l'implementazione di strutture dati e/o algoritmi spiegati a lezione. Le esercitazioni vanno svolte a gruppi (di due persone) e ci saranno alcune ore di laboratorio (fuori da quelle nel calendario lezioni) dedicate ad assistenza e spiegazioni sulle esercitazioni. Le esercitazioni prevedono la consegna del codice e di documentazione scritta. Sara' valutata la correttezza e la qualita' del codice e della documentazione. 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 nelle esercitazioni. Lo studente dovra' mostrare di aver compreso i concetti e di essere in grado di applicare le tecniche studiate. Calendario appelli Dati Ora Luogo Tipologia Note 09/01/2020 09:00 GENOVA Laboratorio 03/02/2020 09:00 GENOVA Laboratorio 03/06/2020 09:00 GENOVA Laboratorio 01/07/2020 09:00 GENOVA Laboratorio 11/09/2020 09:00 GENOVA Laboratorio