WEB PROGRAMMING, DESIGN & USABILITY

Anno accademico 2020/2021 - 3° anno - Curriculum B
Docenti: Salvatore Antonio RICCOBENE e Giuseppe PAPPALARDO
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

Il corso si propone di introdurre le basi indispensabili per la realizzazione di applicativi web based, sia dal punto di vista del front-end che del back-end, fornendo una conoscenza full-stack.

Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

  1. Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere i concetti alla base della programmazione per il web; in particolare lo studente acquisirà le conoscenze dei principali protocolli e linguaggi in uso sia per la programmazione lato server che in quella lato client.
  2. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per realizzare sia la parte front-end che la parte back-end di un sistema web, scegliendo le tecnologie più opportune e ottimizzando le risorse disponibili. A tale riguardo una parte del corso consisterà di lezioni in laboratorio, con esempi pratici di realizzazioni di applicazioni web.
  3. Autonomia di giudizio (making judgements): Attraverso esempi concreti di applicazioni web, lo studente sarà in grado di elaborare autonomamente soluzioni in grado di implementare, nella maniera più conveniente, le richieste che riceverà nel suo lavoro.
  4. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito generale dei sistemi informativi e dei sistemi webr in particolare.
  5. Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale verranno dati cenni sui diversi linguaggi e piattaforme in uso per lo sviluppo di applicativi web.

Modalità di svolgimento dell'insegnamento

Le lezioni sono tenute in aula con l'ausilio di slide, messe a disposizione degli studenti sul portale Studium. Le slide non sostituiscono i testi di riferimento, ma, oltre che agevolare la comprensione della lezione, forniscono un dettaglio puntuale sul programma svolto.
Le lezioni frontali teoriche sono intervallate da esercitazioni pratiche, svolte nella stessa aula di lezione. Gli studenti sono invitati a formare piccoli gruppi di lavoro (massimo 4-5 persone)
per lo svolgimento delle esercitazioni proposte.
Il corso prevede delle ore aggiuntive di Didattica integrativa, durante le quali vengono tipicamente svolti approfondimenti sugli argomenti già trattati nelle ore di esercitazione di gruppo.

In caso di necessità, a seguito di apposite indicazioni da parte degli organi di Ateneo, l'insegnamento potrà essere impartito in modalità mista o a distanza, con le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto qui riportato.


Prerequisiti richiesti

  1. Programmazione I e II : programmazione ad oggetti, strutture dati
  2. Database: DB relazionali
  3. Interazione e Multimedia: Spazi di colori, interfacce utenti
  4. Reti di Calcolatori: protocolli di comunicatione, indirizzamento IP, protocollo HTTP, socket

Frequenza lezioni

La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata. In particolare si consiglia la frequenza alle ore di esercitazione di gruppo e di Didattica integrativa.


Contenuti del corso

Introduzione al World Wide Web
Storia del web del linguaggio HTML
Evoluzione del web e dei browser
Il protocollo HTTP: URL e Verbi
Il linguaggio HTML
Struttura di un documento HTML
I CSS

  • sintassi
  • selettori
  • pseudoclassi
  • rules
  • responsivness

Programmazione HTML dinamica
Programmazione lato client e lato server
Origine di Javascript
Il Linguaggio Javascript
Integrazione di Javascript in HTML
Documenti Dinamici
Gestione e controllo dei form HTML
JQuery
Comunicazioni asincrone
Design e Usability del web

Programmazione lato server
I Web Server
Il linguaggio PHP
Interazione del PHP con i webserver
PHP e HTML
Passaggio di parametri tra pagine HTML
Le sessioni: apertura e chiusura
Utilizzo e passaggio dei parametri nelle sessioni
I cookies: uso e gestione
Introduzione a Laravel
sviluppo di model, controller e views
Sviluppo di API REST
Sviluppo distribuito lato server
Introduzione a NodeJS
Programmazione ad eventi
Realizzazione di un Web Server
Introduzione alle websocket
Cenni sui linguaggi lato server


Testi di riferimento

1) R.W. Sebesta, Programming the World Wide Web, 8th Edition



Programmazione del corso

 ArgomentiRiferimenti testi
1HTTP e i server webProgramming the WWW 
2HTML 
3XHTMLProgramming the WWW 
4CSS e DOMProgramming the WWW 
5JavascriptProgramming the WWW 
6PHPProgramming the WWW 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

La verifica viene effettuata tramite:

  • prova scritta, con quesiti a risposta multipla e a risposta aperta, con la stesura di brevi codici implementativi.
  • colloquio orale, per la verifica di quanto riportato nella prova scritta e per ulteriori approfondimenti delle conoscenze

Opzionalmente è possibile svolgere un progetto utilizzando le tecnologie software studiate a lezione.

In caso di necessità, a seguito di apposite indicazioni da parte degli organi di Ateneo, la verifica potrà essere effettuata in modalità telematica, con le necessarie variazioni rispetto a quanto dichiarato in precedenza.


Esempi di domande e/o esercizi frequenti

Implementare un servizio web con Javascript (lato client) e PHP (lato server)