DATABASES AND WEB PROGRAMMING A - L
Anno accademico 2021/2022 - 3° anno- DATA-BASE: Daniela GIORDANO
- WEB PROGRAMMING: Simone PALAZZO
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
- Comprendere i principali concetti di gestione e progettazione di sistemi di database
- Comprendere concetti e strumenti per l'interrogazione di basi di dati di natura differente (quindi con dati strutturati e non) e a diverse scale
- 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
- Essere in grado di progettare, partendo dai requisiti, una base di dati relazionale (e non), dal punto di vista concettuale, logico e fisico.
- Essere in grado di comprendere e utilizzare il linguaggio SQL per gestire i dati ed effettuare interrogazioni efficienti.
- Essere in grado di creare ed interrogare basi di dati non strutturate (NoSQL) tramite manipolazione di documenti JSON
Autonomia di giudizio
- Analizzare i requisiti funzionali e non-funzionali
- Comprendere le implicazioni di scelte progettuali relative ai tempi di risposta e di implementazione
- Comprendere le problematiche prestazionali associate ai diversi DBMS
Abilità comunicative
- Redigere un documento di specifiche di una database, facendo riferimento agli aspetti di modellazione concettuale e logica
- Spiegare oralmente le proprie scelte di progetto
Capacità di apprendimento
- Imparare a utilizzare le tecnologie per lo sviluppo di database e della loro scalabilità
- Imparare a confrontare schemi di progetto alternativi da diverse prospettive
- Imparare a riconoscere i principi di progetto alla base di diverse strategie di modellazione e delle tecnologie di sviluppo
- WEB PROGRAMMING
Il modulo tratta gli strumenti metodologici per la progettazione dei moderni sistemi informativi basati su web, 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 la realizzazione di GUI interattive (per esempio, React).
Gli obiettivi formativi del corso, declinati secondo i descrittori di Dublino, sono:
Conoscenza e capacità di comprensione
- Comprendere i principali concetti di progettazione di sistemi informativi per il web
- Comprendere concetti e strumenti per la realizzazione di back-end efficienti e front-ent funzionali a supportare le esigenze degli utenti
- Comprendere concetti e strumenti per la separazione delle responsabilità, dei ruoli e per il riuso del codice nello sviluppo di una web application
Conoscenze applicate e capacità di comprensione
- Essere in grado di progettare ed implementare una web application multipiattaforma e multidispositivo sia lato server che lato client
- Essere in grado di implementare servizi web che gestiscano l'interazione con i dati (DBMS) e l'integrazione con altri sistemi web (REST API)
- Essere in grado di progettare e realizzare la user experience in una web application
Autonomia di giudizio
- Analizzare i requisiti funzionali e non-funzionali
- Comprendere le implicazioni di scelte progettuali relative a software stack alternativi, lato server e lato client
- Comprendere le implicazioni di scelte progettuali relative alla gestione dei cambiamenti e della manutenzione di software stack alternativi
- Comprendere le problematiche prestazionali associate a software stack alternativi
Abilità comunicative
- Redigere un documento di specifiche per una web application, facendo riferimento agli aspetti che le contraddistinguono da altre tipologie di software
- Spiegare oralmente le proprie scelte di progetto
Capacità di apprendimento
- Imparare a utilizzare le tecnologie per lo sviluppo di una applicazione web complessa
- Imparare a confrontare schemi di progetto alternativi da diverse prospettive
- Imparare a riconoscere i principi di progetto alla base dei diversi stili architetturali, meccanismi di trasmissione dei dati e tecnologie di sviluppo
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 e di reti di calcolatori.
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*.
- 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
- HTML, CSS e Document Object Model (DOM)
- Il linguaggio PHP
- HTML con PHP: form, sessioni e cookies
- Interazione tra PHP e DBMS
Progettazione di Web Information System e Sviluppo di applicazioni web lato client
- Il linguaggio JavaScript: funzioni, modello ad oggetti (oggetti window, document, form), eventi
- Responsive Web Design: selettori CSS, selettori di posizione e operazioni su oggetti (navigazione e manipolazione DOM)
- AJAX: richieste asincrone, risposte testuali, 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., React)
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
Dispense del docente e documentazione da Mozilla Developer Network e PHP.net
Programmazione del corso
DATA-BASE | |||
Argomenti | Riferimenti testi | ||
---|---|---|---|
1 | Introduzione 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 | |
2 | Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionale | Testo 1. Capitolo 3 | |
3 | SQL concetti base: definizione dei dati, interrogazioni in SQL (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidifcate), Istruzioni di modifica dei dati. | Testo 1. Capitolo 4 | |
4 | L'ambiente MySQL | Dispense del docente | |
5 | SQL: viste, asserzioni, funzioni, stored procedures | Testo 1. Capitolo 5 | |
6 | SQL: Trigger, transazioni e controllo degli accessi | Testo 1. Capitolo 5 | |
7 | Progettazione 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 | |
8 | La progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi, traduzione nel modello relazionale | Testo 1. Capitolo 8 | |
9 | Cenni di normalizzazione: Ridondanze, anomalie, dipendenze funzionali, e forme normali | Testo 1. Capitolo 9 | |
10 | Cenni 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 | |
11 | Database NoSQL: Proprietà ACIDE vs BASE, Tipi di database NoSQL, Teorema CAP | Dispense del docente | |
12 | MongoDB: Selettori, Ricerca, Ordinamento, Pipeline, Raggrumenti e Aggregazione | Dispense del docente | |
WEB PROGRAMMING | |||
Argomenti | Riferimenti testi | ||
1 | HTML e CSS (parte 1) | ||
2 | CSS (parte 2) | ||
3 | Flexbox + position | ||
4 | Mobile web | ||
5 | Esercitazione su CSS | ||
6 | JavaScript (parte 1) | ||
7 | JavaScript (parte 2) | ||
8 | Esercitazione su JavaScript | ||
9 | Eventi + fetch API | ||
10 | REST API | ||
11 | Esercitazione su JavaScript | ||
12 | PHP (parte 1) | ||
13 | PHP (parte 2) | ||
14 | PHP e web (parte 1) | ||
15 | PHP e web (parte 2) | ||
16 | Esercitazione su PHP | ||
17 | Esercitazione per homework | ||
18 | Architettura MVC | ||
19 | Esercitazione su MVC | ||
20 | React |
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, alla 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
Il corso offre due modalità di esami.
Svolgimento di homework durante il corso
Per ogni macro-argomento del corso, verrà assegnato un progetto individuale da svolgere a casa ("homework"), tramite il quale lo studente dovrà dimostrare la padronanza dell'argomento in questione. Previo completamento di tutti gli homework assegnati, l'esame di fine corso consisterà nella discussione dello svolgimenti degli stessi.
Progetto unico
Qualora non si segua la modalità di superamento della materia tramite homework, l'esame di verifica dell'apprendimento consisterà nello svolgimento in un progetto unico che racchiuda tutti gli argomenti studiati nel corso, e nella discussione dello stesso.
---
A prescindere dalla modalità scelta, la discussione dell'elaborato verterà su scelte progettuali, aspetti implementativi, domande teoriche e domande pratiche (si vedano gli esempi di domande). La sufficienza sarà raggiunta attraverso Il rispetto delle specifiche minime di progetto e la consapevolezza delle scelte implementative effettuate. Sarà ulteriormente valutata la capacità dello studente di utilizzare funzionalità e tecniche avanzate che esulino dalle specifiche minime.
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
Discussione delle implementazioni degli elaborati. Esempi di domande (lista non esaustiva):
- cosa fa questa riga di codice?
- quale funzione gestisce questo evento?
- quale funzione gestisce questa richiesta lato server?
- in che altro modo si può implementare questa funzionalità?
Domande teoriche. Esempi (lista non esaustiva):
- cosa sono i selettori in CSS?
- che valori può assumere la proprietà display in CSS e cosa significano?
- come si controlla la distanza tra un elemento HTML e gli elementi circostanti, o tra il contenuto di un elemento e il bordo dell'elemento?
- come si gestisce un evento in JavaScript?
- come si leggono in PHP dei dati trasmessi da un form?
- come si effettua una richiesta asincrona in JavaScript?
Domande pratiche. Esempi (lista non esaustiva):
- scrivere il codice di due div annidati i cui bordi distino 20 pixel;
- scrivere il codice JavaScript per leggere il contenuto testuale di tutti gli span di classe C contenuti in un div con id D;
- scrivere il codice PHP per leggere una variabile passata come parametro GET.