WEB PROGRAMMING
Anno accademico 2024/2025 - Docente: FEDERICO FAUSTO SANTORORisultati di apprendimento attesi
L'esame verterà su tre prove obbligatorie:
Scritto, Orale e Laboratorio.
La prova Scritta e Orale potrà essere convalidata dal superamento delle prove in itinere che si svolgeranno durante il corso, Il mancato superamento di una prova in itinere renderà di nuovo obbligatorio l'esame scritto ed orale.
Solo dopo aver superato le prove obbligatorie sarà possibile, in via opzionale, farsi assegnare un progetto da sviluppare secondo le tematiche affrontate durante il corso e da consegnare entro 30 giorni dall'assegnazione. Il progetto può essere proposto dallo studente e può coincidere con un progetto di altra materia. Il progetto dovrà essere poi pubblicato in maniera PUBBLICA sul repository ufficiale del corso (https://github.com/UniCT-WebDevelopment).
Gli studenti con disabilità e/o DSA dovranno contattare con sufficiente anticipo rispetto alla data dell'esame il docente e il referente CInAP del DMI per comunicare che intendono sostenere l'esame fruendo delle opportune misure compensative.
- Conoscenza e capacità di comprensione (knowledge and understanding). Il corso di "Web Programming" si prefigge l'obiettivo di fornire agli studenti le conoscenze sui principi, modelli, tecniche e strumenti per la programmazione e progettazione di sistemi e architetture Fullstack.
- Capacità di applicare conoscenza e comprensione (applying knowledge and understanding). Attraverso l'analisi di diversi casi di studio e tramite esercitazioni in laboratorio, il corso consente allo studente di ottenere le capacità di applicare le tecniche acquisite durante le lezioni teoriche nei contesti applicativi dove è richiesto l'utilizzo di tecnologie per il Web.
- Autonomia di giudizio (making judgements). Le lezioni del corso e soprattutto le attività di laboratorio sono organizzate in modo da includere un'analisi critica di casi di studio, delle soluzioni impiegate, delle possibili varianti e dei pro e contro di queste ultime, al fine di consentire allo studente di acquisire un'adeguata autonomia di valutazione delle scelte tecniche.
- Abilità comunicative (communication skills). Le abilità comunicative dello studente saranno considerate soprattutto durante le varie esercitazioni e esame finale con progetto annesso, in cui lo studente è chiamato ad esporre le scelte implementative adottate e motivandole opportunamente.
- Capacità di apprendimento (learning skills). Le capacità di apprendimento degli studenti saranno valutate durante le esercitazioni di laboratorio, le quali hanno l'obiettivo di testare quanto e come gli studenti abbiano compreso il funzionamento delle tecnologie introdotte durante il corso.
Modalità di svolgimento dell'insegnamento
Prerequisiti richiesti
Requisiti Generali:
Conoscenza dello stack di rete TCP/IP, conoscenza generale dei Database relazionali e non relazionali, programmazione ad oggetti.
Propedeuticità (per L-31):
Reti di Calcolatori e Interazione e Multimedia.
Frequenza lezioni
Contenuti del corso
Il programma verterà sulle conoscenze basilari allo sviluppo Full-Stack, in particolar modo:
Front-End:
Network Application Layer
HTTP Introduction
Client - Server
URLs and Verbs
Status Codes
HTML Introduction
Web Browsers and HTML Documents
Block and inline Elements
Text Elements
Attributes
List and Tables
Forms
CSS Introduction
Simple Selectors
Selector Combinators
Pseudo-classes and elements
Box Model
CSS Style rules
Cols System
Flexbox System
Grid System
Javascript Introduction
Variables
Data Types
Expressions
Statements
Conditionals
Arrays
Functions
Arrow Functions
Scope and Closures
Objects and Notations
Classes
DOM
Events
Asynchronous
Callbacks
Promises
Async/Await
Ajax and Fetch
JQuery Introduction
Selectors
Elements
DOM Traversing
Typescript Introduction
Differences and Story
The compiler
Workflow and Configuration
Objects and Arrays
Explicit and Dynamic Types
Functions and Aliases
DOM and Casting
Classes
Modules
Interfaces
Enums and Tuples
Back-End:
Introduction to Back-End Development
HTTP & Client - Server Re-Introduction
Server and Services
SOA and Microservices
Workflow of a Server
Database Types
Back-end Languages
Back-end Technologies
Back-end Systems
REST Architecture
Security Aspects
Introduction to NodeJS
History of NodeJS
Installation
Difference between Browser and NodeJS
Hello World!
Environment Variables
Application Arguments
Exports
The NPM
The package.json
Dependencies
The Event Loop
Event Emitter
NodeJS - Development Introduction
Simple HTTP Server and request
Files operations
Streams
Error handling
NodeJS - Express Introduction
Hello Express
Route Handlers
Middlewares
Static Files
NodeJS - WebSockets Introduction
HTTP Polling and Streaming
Messaging Transmission
Node JS - SocketIO Introduction
Difference between WebSockets and SocketIO
Simple Server Example
Simple Client Example
Events and Rooms
Testi di riferimento
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Network Application Layer | |
2 | HTML Introduction | |
3 | CSS Introduction | |
4 | Javascript Introduction | |
5 | JQuery Introduction | |
6 | Typescript Introduction | |
7 | UI / UX For Developers | |
8 | Introduction to Back-End Development | |
9 | Introduction to NodeJS | |
10 | NodeJS - Development Introduction | |
11 | NodeJS - Express Introduction | |
12 | NodeJS - WebSockets Introduction | |
13 | Node JS - SocketIO Introduction |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Tutte le prove di cui sopra sono obbligatorie.
Il progetto è da intendersi opzionale e potrà essere richiesto esclusivamente dopo il superamento della prova scritta, orale e laboratorio. Il progetto assegnato dovrà essere consegnato entro 30 giorni dall'assegnazione e potrà essere proposto dallo studente e potrà coincidere con un progetto di altra materia.
Il progetto dovrà essere poi pubblicato in maniera PUBBLICA sul repository ufficiale del corso (https://github.com/UniCT-WebDevelopment).
Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di rispondere ad almeno il 60% delle domande né di svolgere gli esercizi teorici e pratici. 18-20 : lo studente dimostra una padronanza appena sufficiente dei concetti base, e/o riesce ad impostare gli esercizi teorico/pratici con molta difficoltà e con vari errori. 20 - 22 : lo studente ha superato con successo la prova scritta ed orale, dimostrando una buona padronanza dei contenuti del corso 22 - 27: lo studente ha affrontato tutte le esercitazioni o prove in itinere o esame di laboratorio 27 - 30 e lode : lo studente ha affrontato tutte le prove d'esame, riuscendo inoltre a progettare e a sviluppare un progetto Web assegnatogli