logo-polimi
Loading...
Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2019/2020
Scuola Scuola di Ingegneria Industriale e dell'Informazione
Insegnamento 085879 - TECNOLOGIE INFORMATICHE PER IL WEB
Docente Fraternali Piero
Cfu 5.00 Tipo insegnamento Monodisciplinare

Corso di Studi Codice Piano di Studio preventivamente approvato Da (compreso) A (escluso) Insegnamento
Ing Ind - Inf (1 liv.)(ord. 270) - MI (358) INGEGNERIA INFORMATICAI3IAZZZZ085879 - TECNOLOGIE INFORMATICHE PER IL WEB
II3AZZZZ085879 - TECNOLOGIE INFORMATICHE PER IL WEB
Ing Ind - Inf (Mag.)(ord. 270) - MI (481) COMPUTER SCIENCE AND ENGINEERING - INGEGNERIA INFORMATICA*AZZZZ085879 - TECNOLOGIE INFORMATICHE PER IL WEB

Obiettivi dell'insegnamento

Il web è una piattaforma tecnologica fondamentale per lo sviluppo di applicazioni accessibile da rete fissa o mobile. Il corso ha come scopo di descrivere l’architettura del web dal punto di vista dei protocolli (HTTP), dei formati di descrizione e presentazione dei contenuti (HTML e CSS) e dei linguaggi e ambienti di programmazione (Java Servlet, Java Server Pages e Javascript).


Risultati di apprendimento attesi

Descrittori di Dublino

Risultati di apprendimento attesi

Conoscenza e comprensione

Lo studente apprenderà:

  • Gli standard tecnologici alla base del web
  • Gli elementi che costituiscono l’architettura di un’applicazione web
  • Le tecniche di progettazione delle applicazioni web
  • I linguaggi e gli ambienti di programmazione (framework) per applicazioni web, a lato client e a lato server
  • Gli aspetti di base per la sicurezza e la scalabilità delle applicazioni web

Capacità di applicare conoscenza e comprensione

Attraverso le esercitazioni lo studente acquisisce la capacità di:

·       Analizzare i requisiti funzionali e non funzionali di un’applicazione web

·       Progettare i dati per un’applicazione web

·       Progettare l’architettura client e server di un’applicazione web

·       Programmare i componenti client e server di un’applicazione web, con Java servlet, Java Server Pages, JavaScript, HTML e CSS

·       Migliorare le prestazioni e la sicurezza di un’applicazione web

Autonomia di giudizio

A seguito del superamento dell’esame lo studente è in grado di:

·       Valutare soluzioni alternative per la costruzione dell’architettura di un’applicazione web

·       Scegliere tra diverse tecniche di realizzazione delle funzionalità client e server di un’applicazione web

Comunicazione

·       Documentare lo sviluppo di un’applicazione web

·       Motivare le proprie scelte progettuali a fronte di esemi di requisiti

Capacità di apprendimento

Gli studenti impareranno a

·       sviluppare un‘applicazione web  di media complessità

·       confrontare schemi progettuali alternativi

·       scegliere tra diverse opzioni tecnologiche in base ai requisiti dell’applicazione e del processo di sviluppo


Argomenti trattati

Introduzione al corso: obiettivi, prerequisiti, valutazione

Elementi fondanti del World Wide Web

  • Breve storia del web
  • HyperText Transfer Protocol (HTTP)
    • Storia e versioni
    • Gli attori di HTTP: origin server, user agent, proxy, gateway
    • Identificazione delle risorse, formato delle e delle risposte
    • Principali header HTTP
    • La sicurezza in HTTP
    • Caratteristiche avanzate: connessioni persistenti, tunnel, trasferimento a blocchi, negoziazione del contenuto e gestione della cache
    • Limitazioni di HTTP per lo sviluppo di applicazioni interattive
  • HyperText Markup Language (HTML)
    • Storia e versioni
    • Il concetto di markup
    • Architettura del browser
    • Struttura e contenuto del documento
      • Elementi strutturali, multimedia, navigazione ipertestuale, tabelle e form
    • Valutazione critica di HTML, il problema della separazione degli aspetti
      • Dynamic HTML, XTML
    • Confronto tra HTML e XML
  • La presentazione
    • Elementi definiti dall’utente con i tag DIV e SPAN e l’attributo class
    • Cascading Style Sheet
      • Storia e versioni
      • Definizione dei file di stile e formato delle regole
      • Sintassi della selezione
      • Motore grafico del browser e principali proprietà CSS
      • Esecuzione delle regole CSS: specificità, ereditarietà, cascata, default del browser, regole composte

Architetture per la generazione dinamica dei contenuti

  • Storia ed evoluzione delle tecnologie per i gateway
  • Web statico e web dinamico, limiti di HTTP per lo sviluppo di applicazioni dinamiche e interattive
  • Creazione dinamica dei contenuti: passaggio parametri e tipizzazione dei dati in HTTP; query string e request body; differenza tra metodo GET e POST; Common Gateway Interface; variabili d’ambiente CGI; struttura di un programma CGI; modello di esecuzione dei programmi CGI; valutazione critica di CGI
  • Creazione dinamica dei contenuti con application server Java: architettura di Java Servlet, nozione di contenitore e di programmazione all’interno di un ambiente gestito (framework); modello di esecuzione delle servlet, concorrenza e sincronizzazione; sintassi e interfaccia di una servlet, ciclo di vita delle servlet; configurazione e rilascio di un’applicazione servlet.
  • Personalizzazione delle applicazioni web: nozioni preliminari: pseudo identificazione, identificazione, autenticazione, autorizzazione, controllo basato sui ruoli dell’accesso. Tecniche di pseudo-identificazione basate su HTTP header (cookie), URL e form. Gestione della sessione. Metodi delle servlet per la personalizzazione.
  • Connessione tra basi di dati e web: modellazione dei dati per il web; virtualizzazione del database con JDBC; uso della connessione al database nelle servlet; principali problemi di scalabilità  e sicurezza.
  • Programmazione della presentazione mediante template; requisiti di modularizzazione del codice; il concetto di template a lato server; Java Server Pages: sintassi, ciclo di vita e modello di esecuzione. Separazione del database mediante oggetti (Java Bean). Regole di buona progettazione di un’applicazione web con servlet, JSP e Java Bean. Casi di studio.

Programmazione web a lato client

  • Storia ed evoluzione delle tecnologie per Rich Internet Application
  • Scripting a lato client, definizione e differenze con scripting a lato server
  • Il linguaggio JavaScript: sintassi; tipi di dati e istruzioni; strutture dati; regole di tipizzazione debole; oggetti e prototipi; funzioni come oggetti; regole di visibilità e durata;  concetto di chiusura e callback.
  • Programmazione nel browser con JavaScript: il modello di esecuzione dei programmi nel browser; elementi principali: window, document, element; Document Object Model; programmazione delle form; eventi; definizione, registrazione e modello di esecuzione; gli eventi HTML DOM. Realizzazione di applicazioni con chiamate asincrone al server: AJAX e oggetto XMLHttpRequest; Regole di buona progettazione di un’applicazione web con scripting a lato client.

HTML 5

  • Panoramica di HTML 5: nuovi elementi, grafica vettoriale, multimedialità. Nuove interfacce con il browser: geo-localizzazione, persistenza a lato client, comunicazione TCP-IP

Elementi di base di progettazione e verifica delle architetture web

  • Architetture: server singolo, data server, 3 tier, application server. Scalabilità orizzontale e verticale. Gestione dei guasti e persistenza delle sessioni. Protezione del data server. Web caching. Elementi di base e strumenti per la verifica funzionale e delle prestazioni di applicazioni web.

Prerequisiti

Lo studente deve conoscere i fondamenti della programmazione imperativa 8con linguaggi quali C) e della programmazione ad oggetti (con linguaggi come C++ o Java). Deve inoltre conoscere i fondamenti della progettazione concettuale e logica delle basi di dati con Entità-Relazione e modello relazionale e sapere programmare interrogazioni e aggiornamenti con il linguaggio SQL.


Modalità di valutazione

La valutazione si baserà su una prova scritta e una discussione orale (opzionale) sul contenuto della prova e sugli argomenti del corso.

La tabella seguente descrive in maggior dettaglio gli elementi della valutazione.

Modalità di verifica

Descrizione

Risultato di apprendimento perseguito (descrittore di Dublino)

Prova scritta

Soluzione di problemi numerici

  • Analisi semantica di esempi di programmi con regole CSS

Esercizi di progettazione

·       Progettazione di componenti server side in Java Servlet/JSP

·       Progettazione di componenti client side in JavaScript

1,2

 

1, 2, 3, 4, 5

Orale

L'orale (opzionale) prevede la discussione sulla logica di progettazione e sulle tecnologie e soluzioni adottate a fronte di esempi di requisiti applicativi

2, 3, 4, 5


Bibliografia
Risorsa bibliografica obbligatoriaFlanagan, David, JavaScript: The Definitive Guide: Activate Your Web Pages (Definitive Guides), Editore: O'Reilly Media; 6th edition, Anno edizione: 2011, ISBN: 978-0596805524 https://www.amazon.com/gp/product/0596805527/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
Risorsa bibliografica obbligatoriaPurewal, Semmy, Learning Web App Development: Build Quickly with Proven JavaScript Techniques, Editore: O'Reilly, ISBN: 978-1449370190 https://www.amazon.com/gp/product/1449370195/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

Forme didattiche
Tipo Forma Didattica Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lezione
32:30
48:45
Esercitazione
17:30
26:15
Laboratorio Informatico
0:00
0:00
Laboratorio Sperimentale
0:00
0:00
Laboratorio Di Progetto
0:00
0:00
Totale 50:00 75:00

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Italiano
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese
schedaincarico v. 1.6.1 / 1.6.1
Area Servizi ICT
08/12/2019