Salta al contenuto principale
CODICE 97163
ANNO ACCADEMICO 2020/2021
CFU
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

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