Laboratorio d’Informatica

 
Anno accademico 2019/2020

Descrizione del corsoProgrammaTesi di riferimentoOrganizzazione e orarioMateriale didatticoEsamiValutazione del corso – Recapiti del docenteAvvisi


Descrizione del corso

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.


Organizzazione e orario

Il laboratorio si è svolto nel primo semestre.


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.

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.

È disponibile una guida sintetica all’uso di PostgreSQL per gli scopi di questo laboratorio.

Esercizi
  • Linguaggio Python

Traccia degli argomenti delle lezioni e testo degli esercizi svolti in laboratorio (aggiornati il 19/11/2019)

Soluzione degli esercizi svolti in laboratorio (programmi Python, aggiornati il 19/11/2019)

  • Basi di dati
Progetto LIVIA – Laboratorio Informatico Virtuale di Ingegneria e Architettura

Dall’A.A. 2017/2018 è in corso presso la Facoltà di Ingegneria e Architettura il progetto sperimentale LIVIA, finanziato dal Rettorato, che prevede la “virtualizzazione” del laboratorio LIDIA, ovvero l’installazione e la fruizione di tutto il software del laboratorio (inclusi i programmi soggetti a licenza) attraverso macchine virtuali residenti in una infrastruttura cloud.

Questo rende possibile agli studenti e ai docenti la creazione di una propria macchina virtuale contenente tutti i software necessari, alla quale sarà possibile accedere da qualsiasi calcolatore e da qualsiasi connessione di rete, sia dagli spazi della Facoltà (incluso il laboratorio LIDIA) che dall’esterno. Questa dovrebbe essere la nuova organizzazione del laboratorio LIDIA al termine della fase sperimentale.

Tutti gli studenti del Laboratorio d’Informatica sono invitati a partecipare alla sperimentazione usando il software PostgreSQL sulla propria macchina virtuale per la preparazione dell’esame.


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 degli ultimi tre 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: 24 dicembre 2019

credits unica.it | accessibilità Università degli Studi di Cagliari
C.F.: 80019600925 - P.I.: 00443370929
note legali | privacy

Nascondi la toolbar