DATABASES AND WEB PROGRAMMING M - Z

Anno accademico 2020/2021 - 3° anno
Docenti Crediti: 12
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Organizzazione didattica: 300 ore d'impegno totale, 200 di studio individuale, 70 di lezione frontale, 30 di esercitazione
Semestre: 1° e 2°
ENGLISH VERSION

Obiettivi formativi

  • DATA-BASE

    Il corso tratta prima gli aspetti fondamentali dei sistemi di gestione e di progettazione delle moderne basi di dati nell'ambito dello sviluppo e dell'esercizio di sistemi informatici. In particolare esso fa riferimento sia alle basi di dati relazionali ed alle tecniche implementative fondate sul linguaggio SQL che alle basi di dati non relazionali (NoSQL).

    Gli obiettivi formativi del corso, declinati secondo i descrittori di Dublino, sono:

    Conoscenza e capacità di comprensione

    a) Comprendere i principali concetti di gestione e progettazione di sistemi di database b) Comprendere concetti e strumenti per l'interrogazione di basi di dati di natura differente (quindi con dati strutturati e non) e a diverse scale c) Comprendere il ruolo e l'impatto che i dati ed una loro corretta modellazione hanno sulle applicazioni software che li utilizzano

    Conoscenze applicate e capacità di comprensione

    a) Essere in grado di progettare, partendo dai requisiti, una base di dati relazionale (e non), dal punto di vista concettuale, logico e fisico.

    b) Essere in grado di comprendere e utilizzare il linguaggio SQL per gestire i dati ed effettuare interrogazioni efficienti.

    c) Essere in grado di creare ed interrogare basi di dati non strutturate (NoSQL) tramite manipolazione di documenti JSON

  • WEB PROGRAMMING

    Il modulo tratta gli strumenti metodologici per la progettazione dei moderni sistemi informativi basati su web (Web Information Systems) che collegano le basi di dati ai processi elaborativi di tipo interattivo. A questo fine, vengono trattati, in un contesto laboratoriale, gli strumenti per lo sviluppo di un sistema che comprenda la parte di back-end (programmazione lato server) e di front-end (programmazione lato client), quest'ultima con particolare riferimento ad applicazioni web "responsive". Verranno successivamente trattate tecniche di progettazione e di implementazione più avanzate basate sul pattern architetturale Model-View-Controller (MVC). Si daranno infine cenni su tecniche di progettazione e di implementazione avanzate per: a) la realizzazione di GUI interattive (per esempio, Angular JS e REACT) e b) di applicazioni ibride per mobile (e.g., IONIC).

     

    Gli obiettivi formativi del corso, declinati secondo i descrittori di Dublino, sono:

    Conoscenza e capacità di comprensione

    a) Comprendere i principali concetti di progettazione di Web Information Systems

    b) Comprendere concetti e strumenti per la realizzazione di back-end efficienti e front-ent funzionali a supportare le esigenze degli utenti

    c) Comprendere concetti e strumenti per la sepazione delle responsabilità, dei ruoli e per il riuso del codice nello sviluppo di una web application

     

    Conoscenze applicate e capacità di comprensione

    a) Essere in grado di progettare ed implementare una web application multipiattaforma e multidispositivo sia lato server che lato client

    b) Essere in grado di implementare servizi web che gestiscano l'interazione con i dati (DBMS) e l'integrazione con altri sistemi web (REST API)

    c) Essere in grado di progettare e realizzare la user experience in una web application


Modalità di svolgimento dell'insegnamento

  • DATA-BASE

    Lezioni frontali, esercitazioni, laboratorio e seminari.

    Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

  • WEB PROGRAMMING

    Lezioni frontali, esercitazioni, laboratorio e seminari.

    Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.


Prerequisiti richiesti

  • DATA-BASE

    Conoscenze di base di programmazione.

  • WEB PROGRAMMING

    Conoscenze di base di programmazione.


Frequenza lezioni

  • DATA-BASE

    Consigliata.

  • WEB PROGRAMMING

    Fortemente consigliata.


Contenuti del corso

  • DATA-BASE

    Modelli e Linguaggi per Basi di Dati

    • Introduzione ai Database Management Systems (DBMS): Basi di dati e sistemi di gestione delle basi di dati*, modelli dei dati*, indipendenza dei dati*.
    • Database relazionali:
      • Il modello relazionale: relazioni*, tabelle*, attributi*. Vincoli di integrità*. Chiavi*
      • Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionale
      • Il linguaggio SQL: Definizione dei dati*, interrogazioni in SQL* (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidificate), Istruzioni di modifica dei dati*.
      • SQL avanzato: Viste*, funzioni*, stored procedures* e asserzioni. Trigger*, transazioni* e controllo degli accessi
      • Un esempio di DMBS relazionale: MySQL.
      • Database NoSQL:
        • JSON*
        • ACID vs BASE*
        • Modelli "schema-less"*
        • Tipi di database NoSQL*: chiave-valore, document-based, column-based e graph-based
        • Teorema CAP*
        • Panoramica database NoSQL: MongoDB, Redis, Cassandra, HBase, Neo4j
        • MongoDB*: Selettori, Ricerca, Ordinamento, Pipeline, Raggrumenti e Aggregazione

    Progettazione di Basi di Dati Relazionali

    • Progettazione concettuale: il modello E/R*, raccolta ed analisi di requisiti*, strategie di progettazione concettuale*, verifica di qualita'.
    • Progettazione logica: ristrutturazione degli schemi E/R*, traduzione nel modello relazionale*.
    • Progettazione fisica: strutture di memorizzazione delle tabelle e indici*. Tecniche di hashing. Esecuzione e ottimizzazione delle interrogazioni
    • Cenni di normalizzazione: Ridondanze, anomalie, dipendenze funzionali, e forme normali


    * Conoscenze minime irrinunciabili per il superamento dell'esame.

  • WEB PROGRAMMING

    Fondamenti di web programming e sviluppo lato server

    • HTML5, CSS e Document Object Model (DOM)*
    • Tecnologia Apache-MySQL-Php (AMP)
    • Il linguaggio PHP*
    • HTML con PHP: form, sessioni e cookies*
    • Accesso ai database con PHP*

    Progettazione di Web Information System (WIS) e Sviluppo di applicazioni web lato client

    • Il linguaggio Java Script: Programmare form, manipolare finestre e frames in JavaScript: Funzioni*, Modello ad Oggetti (oggetti window, document, form)*, Eventi*
    • Responsive Web Design: Design Selettori CSS*, selettori di posizione e operazioni su oggetti (navigazione e manipolazione DOM)*, eventi e funzioni oggetto-evento*
    • AJAX*: risposte HTML e JSON
    • Il pattern architetturale MVC*: esempi di strutturazione del software in un framework basato su MVC

    Tecniche di Web Programming avanzate

    • Design e implementazione di GUI interattive (e.g., Angular JS e REACT)
    • Realizzazione di app-ibride per mobile (e.g., IONIC)

    * Conoscenze minime irrinunciabili per il superamento dell'esame.



Testi di riferimento

  • DATA-BASE

    1. Basi di dati - 4/ed, Modelli e linguaggi di interrogazione. Di: Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone, Casa editrice: Mc-Graw-HIll

    2. Appunti e dispense del docente

  • WEB PROGRAMMING

    1. Dispense del docente


Programmazione del corso

DATA-BASE
 ArgomentiRiferimenti testi
1Introduzione alle basi di dati e al modello relazionale: basi di dati e sistemi di gestione delle basi di dati, modelli dei dati, indipendenza dei dati. Il modello relazionale: relazioni, tabelle, attributi. Vincoli di integrità. Testo 1. Capitoli 1 e 2  
2Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionale Testo 1. Capitolo 3  
3SQL concetti base: definizione dei dati, interrogazioni in SQL (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidifcate), Istruzioni di modifica dei dati. Testo 1. Capitolo 4  
4L'ambiente MySQLDispense del docente  
5SQL: viste, asserzioni, funzioni, stored procedures Testo 1. Capitolo 5  
6SQL: Trigger, transazioni e controllo degli accessi Testo 1. Capitolo 5  
7Progettazione delle basi di dati: metodologie, Il modello Entità-Relazione, documentazione degli schemi, raccolta dei requisiti, qualità di uno schema concettuale Testo 1. Cap. 6 e 7, Dispense del docente  
8La progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi, traduzione nel modello relazionale Testo 1. Capitolo 8  
9Cenni di normalizzazione: Ridondanze, anomalie, dipendenze funzionali, e forme normaliTesto 1. Capitolo 9  
10Cenni sulla progettazione fisica dei database: strutture per l'organizzazione dei file, sequenziali, ad array, ad accesso calcolato, strutture ad albero dinamiche Testo 1. Capitolo 11  
11Database NoSQL: Proprietà ACIDE vs BASE, Tipi di database NoSQL, Teorema CAP, Dispense del docente  
12MongoDB: Selettori, Ricerca, Ordinamento, Pipeline, Raggrumenti e AggregazioneDispense del docente  
WEB PROGRAMMING
 ArgomentiRiferimenti testi
1HTML 5, CSS e Document Object Model (DOM)Dispense del docente  
2Introduzione al Web Dinamico: Web Server, Web Client, Web Application, Client-side vs. Server-side processing Testo 4: Capitoli 1-2. Dispense del docente 
3PHP: Variabili, Array, Funzioni, Interazione con HTML Form, Metodi GET e POST, Sessioni, Cookie, Interazione con Database SQL Testo 4: Capitoli 3-4-5-6, 13. Dispense del docente 
4Javascript: Funzioni, Modello ad Oggetti (oggetti window, document, form), Eventi Testo 4: Capitoli 14, 16-17. Dispense del docente  
5Javascript: Selettori CSS, selettori di posizione e operazioni su oggetti (navigazione e manipolazione DOM), eventi e funzioni oggetto-evento Dispense del docente  
6Ajax: Risposte HTML, XML e JSON Testo 4: Capitoli 18-19. Dispense del docente 
7Design Pattern Model-View-Controller: basi per la realizzazione di applicazioni MVC in PHP, Laravel framework Dispense del docente  
8Realizzazione GUI interattiveDispense del docente  
9Sviluppo di applicazione ibride per mobileDispense del docente  

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • DATA-BASE

    L'esame consiste in due prove da svolgere in laboratorio riguardanti: 1) la progettazione di una base di dati, a partire da un insieme di requisiti e dai dati di carico a regime, e la successiva implementazione in MySQL, e 2) la realizzazione di pipeline MongoDB per l'interrogazione di database non relazionali. La prima prova influirà al 70% sul voto del modulo, mentre la seconda al 30%.

    Il voto complessivo sul modulo di database influirà al 50% sul voto totale del corso. La prova viene valutata in base alla capacità di analisi del problema e di giustificare le scelte progettuali, alla correttezza dello schema E/R proposto, alla correttezza e completezza dell'implementazione in SQL, la correttezza e completezza delle query NoSQL.

    La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

  • WEB PROGRAMMING

    L'esame consiste nello sviluppo di un elaborato progettuale riguardante lo sviluppo di un Web Information System. L'elaborato (codice e relazione) viene discusso in sede di esame orale e va consegnato tre giorni prima della data concordata per l'esame orale. La prova viene valutata in base alla chiarezza espositiva, alla capacità di analisi del problema e di giustificare le scelte progettuali e implementative adottate, alla correttezza e completezza dell'implementazione.

    E' prevista anche una prova in itinere che consiste nalle consegna di tre homework (individuali) intermedi che sono parti costitutive di una Web Application. La consegna di almeno due dei tre gli homework è obbligatoria per partecipare alla prova di di fine corso, durante la quale verrà discussa l'integrazione degli homeworks nel progetto finale di un Web Information System. La mancata consegna di un homework comporta una limitazione nel voto finale. Gli homework, singolarmente, non saranno oggetto di valutazione, ma verranno valutati globalmente durante la discussione del progetto finale.

    Il superamento della prova in itinere e della prova di fine corso comporta il superamento del modulo, il cui voto influirà al 50% sul voto totale del corso.

    La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


Esempi di domande e/o esercizi frequenti

  • DATA-BASE

    Esempi di compiti riguardanti la prova di teoria e di laboratorio sono disponibili su Studium.

  • WEB PROGRAMMING

    Per lo sviluppo dell'applicazione web di un sistema informativo, il progetto richiede la presenza delle funzionalità che verranno mostrate durante i laboratori, e il supporto di alcuni casi d'uso che verranno definiti dai docenti. Sul sito del corso verranno inoltre condivisi progetti sviluppati negli anni precedenti.