CODICE 48382 ANNO ACCADEMICO 2020/2021 CFU 7 cfu anno 2 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI 8766 (L-35) - GENOVA 7 cfu anno 3 MATEMATICA 8760 (L-35) - GENOVA 7 cfu anno 1 MATEMATICA 9011 (LM-40) - GENOVA 7 cfu anno 2 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 loro 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, ecc. MODALITA' DIDATTICHE L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro, con circa 2/3 delle ore in laboratorio. Nel perdurare dell'emergenza COVID-19, l'insegnamento sara' erogato in via telematica mediante la piattaforma Teams. Verra' fornito supporto agli studenti per installare sui propri computer i linguaggi Java e Python (che sono gratuitamente scaricabili per i vari sistemi operativi). L'insegnamento prevede lo svolgimento di esercitazioni in Java e in Python, che costituiscono parte della prova d'esame (ved. modalita' di esame e di accertamento). PROGRAMMA/CONTENUTO Tipi 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). Manuali e tutorial 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) DAVIDE ANCONA ELENA ZUCCA (Presidente Supplente) LEZIONI INIZIO LEZIONI In accordo con il calendario accademico approvato dal Consiglio di Corsi di Studi. Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame consiste in: esercitazioni pratiche da svolgere e consegnare durante il semestre, e una prova orale. Le esercitazioni valgono per tutto l'anno accademico. MODALITA' DI ACCERTAMENTO Durante l'anno sono date delle esercitazioni pratiche, aventi come oggetto l'implementazione di strutture dati e/o algoritmi spiegati a lezione. Tali 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 Data appello Orario Luogo Tipologia Note 07/01/2021 09:00 GENOVA Laboratorio 01/02/2021 09:00 GENOVA Laboratorio