CODICE 97163 ANNO ACCADEMICO 2020/2021 CFU 9 cfu anno 2 INGEGNERIA GESTIONALE 10716 (L-9) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05 LINGUA Italiano (Inglese a richiesta) SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE ll corso introduce elementi avanzati di programmazione in Python quali la programmazione ad oggetti, l'utilizzo efficiente di strutture dati, la creazione ed utilizzo di eccezioni e le librerie per la manipolazione di file; il corso introduce anche alla gestione dei database, fornendo cenni di progettazione e implementazione delle basi di dati relazionali. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI L’obiettivo del corso è quello di introdurre lo studente ai concetti fondamentali relativi alla gestione di grandi moli di dati su calcolatori (database) e al loro utilizzo nell’ambito di strumenti applicativi sviluppati per consentire l’immissione, la gestione e l’elaborazione di tali dati. Il corso fornirà le conoscenze sui principali database utilizzati (modello relazionale e associativo), sulle relative caratteristiche teoriche e pratiche. Verrà inoltre fornita la conoscenza della programmazione ordientata agli oggetti in linguaggio Python come strumento principale per l’interazione con i database e lo sviluppo di applicativi che possano prescindere dalle strutture dati predefinite nel linguaggio. Nell’ambito del corso lo studente acquisirà le competenze per progettare e realizzare semplici database e per interagire con gli stessi tramite applicativi scritti in Python. In termini di capacità, lo studente saprà valutare la scelta del modello migliore (relazionale o associativo) per un particolare compito, e a decidere la migliore realizzazione delle strutture dati per l’interazione con un particolare database. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L’obiettivo del corso relativamente alla parte del linguaggio di programmazion Python è quello di introdurre lo studente ai seguenti argomenti: progettazione e programmazione orientata agli oggetti; utilizzo efficiente delle strutture dati predefinite; utilizzo di librerie per la manipolazione dei file; creazione e utilizzo di eccezioni per la gestione degli errori; cenno alle librerie numpy, matplotlib e pandas per l'analisi e la presentazione dei dati. Per quanto riguarda la parte relativa alle basi di dati, l'obiettivo del corso è quello di introdurre lo studente ai seguenti argomenti: concetti fondamentiali relativi alle basi di dati basi di dati di tipo relazionale linguaggio SQL per la creazione e l'interrrogazione di basi di dati progettazione di basi di dati con diagrammi entità-relazione Il risultato principale di apprendimento sarà la capacità di combinare quanto appreso nella parte di Python con quanto appreso nella parte di database per costruire applicazioni che, partendo da dati grezzi, li rielaborano per inseirli all'interno di un database consentendo la successiva interrogazione e presentazione dei dati. PREREQUISITI Il corso richiede la conoscenza di base del linguaggio di programmazione Python (tipi, espressioni, scelte condizionali, costrutti di iterazione, definizione ed utilizzo di funzioni, conoscenza delle strutture dati predefinite). Sebbene il corso inizi riprendendo rapidamente tali conoscenze, una buona padronanza delle stesse è preferibile per affrontare il corso al meglio. MODALITA' DIDATTICHE Il corso si articola in lezioni frontali e laboratori. La maggior parte delle lezioni frontali prevede un'erogazione di contenuti tramite esempi svolti dal docente in modo interattivo, mentre alcune sono basate su slide. I laboratori prevedono lo svoglimento di esercitazioni, alcune delle quali hanno valore per l'esame finale. Le lezioni potranno essere erogate in modalità online. PROGRAMMA/CONTENUTO Il corso si articola sui seguenti contenuti: Variabili, espressioni, tipi stringa (ripasso Python base) Strutture di controllo (ripasso Python base) Liste: caratteristiche ed efficienza Tuple e range: caratteristiche ed efficienza Set: caratteristiche ed efficienza Dizionari: caratteristiche ed efficienza IO da console, gestione file (ripasso Python base) Espressioni regolari, moduli e package Modulo datetime, moduli matematici e numerici Modulo collections e modulo heapq Definizione di classi Ereditarietà e polimorfismo Iteratori e generatori Errori ed eccezioni Testing strutturato di applicazioni Introduzione ai database Modello relazionale Utilizzo di SQL (Data Definition Language) Progettazione di database Diagramma entità-relazioni Progettazione logica Utilizzo di SQL (Data Manipulation Language) Normalizzazione TESTI/BIBLIOGRAFIA Tony Gaddis - Introduzione a Python - Pearson (Informatica) Paolo Atzeni, Stefano Ceri, Piero Fraternali - Basi di Dati - McGraw Hill DOCENTI E COMMISSIONI ARMANDO TACCHELLA Ricevimento: Su appuntamento a richiesta degli studenti. Commissione d'esame ARMANDO TACCHELLA (Presidente) MASSIMO NARIZZANO DAVIDE ANGUITA (Presidente Supplente) LEZIONI INIZIO LEZIONI 22 Febbraio 2021 Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME Prova pratica a calcolatore (eventualmente svolta per via telematica). Esame orale con disccussione dello scritto (eventualmente svolto per via telematica). MODALITA' DI ACCERTAMENTO Soluzione di esercizi che prevedono il caricamento di dati contenuti su file all'interno del database, l'interrogazione del database e la presentazione dei dati ottenuti dalle interrogazioni. Calendario appelli Data appello Orario Luogo Tipologia Note 21/01/2021 09:00 GENOVA Scritto 16/02/2021 09:00 GENOVA Scritto 09/06/2021 09:00 GENOVA Scritto 01/07/2021 09:00 GENOVA Scritto 26/07/2021 09:00 GENOVA Scritto 17/09/2021 09:00 GENOVA Scritto