Giorgio Fumera

LABORATORIO D’INFORMATICA (A.A. 2019/2020)

03 aprile 2021

Corso di laurea magistrale in Ing. per l’Ambiente e il Territorio

Anno accademico 2019/2020

NOTA: nell'A.A. 2020/2021 il corso è svolto dal Dott. Lorenzo Putzu. Gli allievi degli anni accademici precedenti possono sostenere l'esame con il prof. Fumera, facendo riferimento a questa pagina web per il programma del corso e il materiale didattico.


Questo corso si rivolge agli studenti del primo anno del corso di laurea magistrale in Ing. per l’Ambiente e il Territorio, e fornisce conoscenze su due specifici strumenti informatici di interesse per l’ingegneria ambientale: il linguaggio di programmazione Python, e i sistemi di gestione di basi di dati relazionali. Per seguire il laboratorio sono richieste conoscenze di base dell’architettura dei calcolatori e di un linguaggio strutturato di programmazione (C, Python, ecc.).

Gli studenti che supereranno la prova d’idoneità conosceranno:

  • gli elementi principali del linguaggio di programmazione Python e della programmazione orientata agli oggetti
  • i concetti di base del modello concettuale entità-relazione e del modello logico relazionale per la progettazione di basi di dati
  • gli elementi di base del linguaggio SQL per la definizione dello schema logico e per l’interrogazione di basi di dati relazionali
  • gli elementi di base del software PostgreSQL per la gestione di basi di dati relazionali

Saranno inoltre capaci di:

  • sviluppare programmi Python orientati agli oggetti per la soluzione di problemi di elaborazione dati di media difficoltà
  • eseguire la progettazione concettuale e logica di semplici di basi di dati relazionali a partire dai requisiti applicativi, definire lo schema logico mediante il linguaggio SQL, formulare interrogazioni nello stesso linguaggio, e implementare una base di dati mediante PostgreSQL

Programma del corso

  • Il linguaggio Python
    • Elementi di base (richiami):
      • ambiente di programmazione: editor e shell;
      • le istruzioni principali: assegnamento, stampa (print), condizionale (if...else), iterativa (while, for); l’istruzione break; le funzioni input e raw_input;
      • tipi di dato: numeri interi e frazionari, stringhe, liste, dizionari; operatori e funzioni predefinite per i tipi numerici (inclusa la libreria math), stringhe e liste (indicizzazione, slicing, concatenazione, len, split, ecc.), dizionari (accesso agli elementi, aggiunta di nuovi elementi, len);
      • definizione di nuove funzioni: le istruzioni def e return;
      • gestione dei file: le funzioni open, close, write, read, readline, readlines.
    • I tipi di dato tuple (“tupla”) e set (insieme)
    • La funzione predefinita type
    • L’istruzione iterativa for per stringhe, liste, tuple, dizionari e insiemi
    • Operatori, funzioni e metodi principali per i vari tipi di dato:
      • funzioni e operatori sulle tuple: len, in, not in, indicizzazione, slicing
      • funzioni e operatori sugli insiemi: len, in, not in
      • inizializzazione di stringhe, liste, tuple, insiemi e dizionari, e conversione di valori: le funzioni str, list, tuple, set e dict
      • metodi per le stringhe: upper, lower, replace, count, find
      • metodi per le liste: count, append, insert, index, pop, remove, sort
      • metodi per i dizionari: pop, keys, values
      • metodi per gli insiemi: add, discard, remove, clear, issubset, union, intersection, difference
    • Programmazione orientata agli oggetti:
      • definizione di nuove classi
      • variabili d’istanza
      • metodi
      • inizializzazione delle istanze di classe
  • Basi di dati
    • Sistemi di gestione delle basi di dati (DBMS): generalità.
    • Il modello logico relazionale per la descrizione dello schema di una base di dati: tabelle, vincoli d’integrità (di dominio, di chiave primaria, d’integrità referenziale, di dominio esteso, di tupla); schemi e istanze di una tabella e di una base di dati.
    • Progettazione concettuale di una base di dati tramite il modello Entità-Relazione: entità, relazioni, attributi, identificatori delle entità, entità deboli, cardinalità delle relazioni, relazioni uno-a-uno, uno-a-molti, molti-a-molti.
    • Progettazione logica di una base di dati relazionale: definizione dello schema logico a partire dallo schema concettuale Entità-Relazione.
    • Il linguaggio SQL per la definizione dello schema e per l’interrogazione di basi di dati relazionali: generalità; il comando CREATE TABLE; il comando SELECT-FROM-WHERE: variabili di range, operatori insiemistici (UNION, INTERSECT, EXCEPT), interrogazioni nidificate (operatori IN, NOT IN, ANY, ALL); operatori di aggregazione (COUNT, SUM, AVG, MAX, MIN).
    • Introduzione al DBMS PostgreSQL: generalità, creazione di nuove basi di dati, definizione dello schema logico attraverso l’interfaccia grafica e attraverso il comando SQL CREATE TABLE, esecuzione di interrogazioni attraverso il comando SQL SELECT-FROM-WHERE.

Testi di riferimento

Per il linguaggio Python si suggerisce il testo: C. Horstmann, R.D. Necaise, Concetti di informatica e fondamenti di Python, Maggioli, 2014.

Per le basi di dati si suggerisce il testo: P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di Dati – Modelli e linguaggi di interrogazione, McGraw-Hill, 3a ed., 2009 (o altre edizioni).

Tutti i testi consigliati sono disponibili in più copie presso la Biblioteca della Facoltà di Ingegneria e Architettura.


Materiale didattico

Software

Per il linguaggio Python, del quale si userà la versione 2, si suggerisce l’ambiente di programmazione IDLE, disponibile per qualsiasi sistema operativo sul sito web della comunità italiana degli sviluppatori Python, www.python.it. Per un’introduzione al linguaggio Python e per una sua trattazione a livello elementare si rimanda al testo di riferimento indicato sopra.

Per le basi di dati si userà il DBMS open source e gratuito PostgreSQL, disponibile per i principali sistemi operativi. PostgreSQL è molto usato in campo aziendale, ed è coerente con gli standard ANSI SQL. L’intefraccia grafica è accessibile attraverso il componente pgAdmin, che è incluso nel programma d’installazione di PostgreSQL. Si consiglia di installare la versione 9.4 di PostgreSQL.


Esercizi


Prove d’esame

La valutazione consiste in un giudizio d’idoneità. La prova d’esame è suddivisa in due parti indipendenti che potranno essere sostenute anche in date diverse, in ogni caso da concordare con il docente:

  • una prova scritta e orale sullo sviluppo di programmi Python;
  • un elaborato (assegnato dal docente) sulla progettazione di una base di dati, seguito da una prova orale; l’elaborato consiste nella progettazione concettuale e logica di una base di dati relazionale, e nell’uso del linguaggio SQL per definire lo schema logico e formulare interrogazioni; l’elaborato potrà essere svolto individualmente o in gruppi di due o tre studenti.

Per ottenere l’idoneità gli studenti dovranno dimostrare:

  • di conoscere gli elementi principali del linguaggio Python e del suo ambiente di programmazione, e di saper sviluppare programmi di media difficoltà in tale linguaggio;
  • di saper eseguire la progettazione concettuale e logica di semplici basi di dati relazionali a partire dai requisiti, e di saper usare a livello elementare il linguaggio SQL per definire lo schema logico e formulare interrogazioni.

Valutazione del corso

Sono disponibili le schede di valutazione dell’insegnamento dei seguenti anni accademici:


Recapiti del docente

Per informazioni sul corso e per chiarimenti e spiegazioni sugli argomenti del programma potete contattarmi ai seguenti recapiti:

  • telefono: 070 675 5754
  • e-mail: mio-cognome chiocciola unica punto it

Il mio studio si trova al terzo piano del Dipartimento di Ingegneria Elettrica ed Elettronica (DIEE), edificio M (via Is Maglias).


Ultimo aggiornamento: 3 aprile 2021

Questionario e social

Condividi su: