Course Syllabus
Obiettivi
L’insegnamento si propone di fornire agli studenti le conoscenze teoriche e pratiche necessarie per comprendere i principi, i modelli architetturali e le tecnologie alla base delle moderne applicazioni Web distribuite.
Al termine dell’insegnamento lo studente avrà acquisito conoscenze sui protocolli e gli standard del Web, sulle architetture client-server, sui principi delle Web API e delle architetture REST, nonché sulle principali tecnologie e metodologie per la progettazione e lo sviluppo di applicazioni Web interattive.
Lo studente sarà in grado di analizzare i requisiti di un’applicazione Web, progettarne l’architettura e svilupparne i principali componenti utilizzando strumenti e framework di sviluppo moderni. Sarà inoltre in grado di valutare criticamente diverse soluzioni progettuali e tecnologiche, motivando le scelte adottate in funzione dei requisiti applicativi e del contesto di utilizzo.
L’attività di laboratorio consentirà allo studente di consolidare le competenze progettuali e di sviluppo attraverso la realizzazione di applicazioni Web, favorendo anche l’autonomia nell’apprendimento di nuovi strumenti e tecnologie.
Contenuti sintetici
Il corso introduce i principi, i modelli architetturali e le tecnologie per la progettazione e lo sviluppo di moderne applicazioni Web distribuite. Vengono illustrati i protocolli e gli standard del Web, le architetture client-server, i principi delle Web API e delle architetture REST, nonché i fondamenti dello sviluppo di sistemi orientati ai servizi.
Il corso prevede una significativa attività di laboratorio dedicata alla progettazione e allo sviluppo di applicazioni Web interattive mediante linguaggi, framework e strumenti di sviluppo per il front-end e il back-end, con particolare riferimento a HTML5, CSS3, JavaScript, JSON, React e Node.js.
Programma esteso
Introduzione al Web e alle applicazioni distribuite
- Evoluzione di Internet e del Web.
- Architetture client-server e sistemi distribuiti.
- Evoluzione delle applicazioni Web: applicazioni statiche, dinamiche e Single-Page Applications (SPA).
Protocolli e standard del Web
- Il modello TCP/IP e il protocollo HTTP.
- URI, risorse Web e comunicazione client-server.
- Web API e principi delle architetture REST.
- Introduzione ai paradigmi del Web of Services, Web of Data e Web of Things.
Architetture software per applicazioni Web
- Principi del service-oriented computing.
- Introduzione alle architetture orientate ai servizi (SOA).
- Servizi Web e organizzazione di sistemi distribuiti.
- Cenni ai modelli cloud-native e al ruolo del cloud computing nello sviluppo di applicazioni Web.
Scambio e rappresentazione dei dati
- Formati per lo scambio dei dati: JSON e XML.
- Introduzione ai Linked Data e RDF.
- Serializzazione e interoperabilità delle informazioni.
Tecnologie per lo sviluppo di applicazioni Web
- HTML5 e CSS3.
- JavaScript moderno (ES6+).
- Programmazione asincrona e interazione con Web API.
- Principi di progettazione delle interfacce utente.
Framework e strumenti di sviluppo
- Introduzione ai framework JavaScript.
- Sviluppo di applicazioni Web con React.
- Introduzione allo sviluppo back-end con Node.js.
- Integrazione tra front-end e servizi Web.
Attività di laboratorio
- Progettazione e sviluppo incrementale di applicazioni Web.
- Realizzazione di componenti front-end e integrazione con servizi REST.
- Analisi, debugging e testing di applicazioni Web.
Prerequisiti
È consigliata una conoscenza di base dei principi della programmazione, delle strutture dati e del funzionamento delle reti di calcolatori. Sono inoltre utili familiarità con almeno un linguaggio di programmazione e con i concetti fondamentali dello sviluppo software. I principali concetti propedeutici saranno comunque richiamati durante il corso.
Modalità didattica
Il corso si svolge prevalentemente in presenza.
L’insegnamento prevede differenti modalità didattiche:
Didattica Erogativa (DE): lezioni frontali dedicate alla presentazione dei fondamenti teorici, dei modelli architetturali e delle tecnologie per la progettazione e lo sviluppo di moderne applicazioni Web distribuite. Durante le lezioni vengono introdotti i principali protocolli, standard, modelli architetturali e strumenti di sviluppo utilizzati nella realizzazione di applicazioni Web.
Didattica Interattiva (DI): esercitazioni e attività di laboratorio finalizzate alla progettazione, allo sviluppo e al testing di applicazioni Web. Attraverso lo sviluppo incrementale di una o più applicazioni Web, gli studenti applicano i concetti illustrati durante le lezioni, affrontando l’intero processo di analisi dei requisiti, progettazione, implementazione, integrazione con Web API, verifica e debugging della soluzione realizzata.
Didattica Interattiva (DI): attività di supporto all’apprendimento mediante la piattaforma e-learning, che mette a disposizione materiale didattico, esempi di codice, esercizi, forum di discussione e ulteriori risorse di approfondimento, favorendo il confronto con i docenti e l’apprendimento collaborativo.
Parte del materiale didattico è inoltre resa disponibile in formato audiovisivo attraverso la piattaforma e-learning, nel rispetto delle linee guida di Ateneo.
Lingua di insegnamento: Italiano.
Materiale didattico
Non è previsto un unico testo di riferimento.
Il materiale didattico comprende dispense, slide delle lezioni, articoli scientifici, documentazione tecnica, esempi di codice e ulteriori risorse di approfondimento, che saranno resi disponibili o indicati attraverso la piattaforma e-learning dell’insegnamento.
La documentazione ufficiale delle tecnologie e dei framework utilizzati durante il corso costituisce parte integrante del materiale di studio e sarà opportunamente segnalata nel corso delle lezioni.
Periodo di erogazione dell'insegnamento
Primo Semestre
Modalità di verifica del profitto e valutazione
L’apprendimento è verificato mediante una prova scritta, eventualmente integrata da una prova orale.
La prova scritta è composta da:
- domande a risposta chiusa finalizzate a verificare la conoscenza e la comprensione dei principali concetti teorici affrontati durante il corso;
- domande a risposta aperta finalizzate a valutare la capacità di analizzare, argomentare e confrontare modelli, architetture e tecnologie per lo sviluppo di applicazioni Web;
- esercizi progettuali e di sviluppo finalizzati a verificare la capacità di applicare le conoscenze acquisite alla progettazione e realizzazione di semplici applicazioni Web e all’integrazione di componenti software.
È inoltre previsto un progetto facoltativo, individuale o svolto in gruppi di due studenti, consistente nella progettazione e nello sviluppo di un’applicazione Web. Il progetto è valutato mediante discussione individuale e può contribuire con un punteggio aggiuntivo fino a 4 punti.
La prova orale, su richiesta del docente e/o dello studente, approfondisce gli argomenti trattati nella prova scritta e può determinare un incremento o un decremento della valutazione finale.
Prove in itinere
La prova scritta può essere sostituita da due prove in itinere, ciascuna composta da domande aperte, domande a risposta chiusa ed esercizi relativi agli argomenti teorici e alle attività di laboratorio.
L’accesso alla seconda prova è consentito agli studenti che abbiano conseguito almeno 18/32 nella prima prova. Il voto della prova scritta è determinato dalla media delle due prove. Non sono previste prove di recupero.
Criteri di valutazione
La valutazione tiene conto dei seguenti aspetti:
- conoscenza e comprensione dei principi, dei modelli architetturali e delle tecnologie presentate durante il corso;
- capacità di applicare le conoscenze acquisite alla progettazione e allo sviluppo di applicazioni Web;
- capacità di analizzare problemi progettuali e individuare soluzioni appropriate;
- correttezza tecnica delle soluzioni proposte;
- chiarezza espositiva e utilizzo appropriato della terminologia tecnico-scientifica.
Il voto finale è espresso in trentesimi ed è determinato dalla valutazione della prova scritta (o delle prove in itinere), eventualmente integrata dalla prova orale e dagli eventuali punti aggiuntivi conseguiti nelle attività di laboratorio e nel progetto facoltativo.
Orario di ricevimento
prof. De Paoli: Mercoledì dalle 10:00 alle 12:00 o su appuntamento scrivendo a flavio.depaoli@unimib.it
Domande e discussioni sugli argomenti dell'insegnamento possono essere fatte utilizzando i forum presenti in elearning.
Aims
The course aims to provide students with the theoretical and practical knowledge required to understand the principles, architectural models, and technologies underlying modern distributed Web applications.
By the end of the course, students will have acquired knowledge of Web protocols and standards, client-server architectures, the principles of Web APIs and REST architectures, and the main technologies and methodologies for designing and developing interactive Web applications.
Students will be able to analyze the requirements of a Web application, design its architecture, and develop its main components using modern development tools and frameworks. They will also be able to critically evaluate alternative architectural and technological solutions, justifying their choices according to application requirements and the target context.
The laboratory activities will enable students to consolidate their design and development skills through the implementation of Web applications, while fostering the ability to autonomously learn and adopt new tools and technologies.
Contents
The course introduces the principles, architectural models, and technologies for designing and developing modern distributed Web applications. It covers Web protocols and standards, client-server architectures, the principles of Web APIs and REST architectures, and the fundamentals of service-oriented application development.
A significant part of the course is devoted to laboratory activities focused on the design and development of interactive Web applications using modern front-end and back-end languages, frameworks, and development tools, with particular emphasis on HTML5, CSS3, JavaScript, JSON, React, and Node.js.
Detailed program
Introduction to the Web and Distributed Applications
- Evolution of the Internet and the Web.
- Client-server architectures and distributed systems.
- Evolution of Web applications: static, dynamic, and Single-Page Applications (SPAs).
Web Protocols and Standards
- The TCP/IP model and the HTTP protocol.
- URIs, Web resources, and client-server communication.
- Web APIs and REST architectural principles.
- Introduction to the Web of Services, Web of Data, and Web of Things.
Software Architectures for Web Applications
- Principles of service-oriented computing.
- Introduction to Service-Oriented Architecture (SOA).
- Web services and the organization of distributed systems.
- Overview of cloud-native models and the role of cloud computing in Web application development.
Data Representation and Exchange
- Data exchange formats: JSON and XML.
- Introduction to Linked Data and RDF.
- Data serialization and interoperability.
Web Application Development Technologies
- HTML5 and CSS3.
- Modern JavaScript (ES6+).
- Asynchronous programming and interaction with Web APIs.
- Principles of user interface design.
Development Frameworks and Tools
- Introduction to JavaScript frameworks.
- Web application development with React.
- Introduction to back-end development using Node.js.
- Integration between front-end applications and Web services.
Laboratory Activities
- Incremental design and development of Web applications.
- Development of front-end components and integration with REST services.
- Analysis, debugging, and testing of Web applications.
Prerequisites
Basic knowledge of programming principles, data structures, and computer networks is recommended. Familiarity with at least one programming language and the fundamentals of software development is also beneficial. The main prerequisite concepts will be reviewed during the course when needed.
Teaching form
The course is mainly delivered on campus.
The teaching activities combine different learning modalities:
Direct Teaching (DE): lectures introducing the theoretical foundations, architectural models, and technologies for designing and developing modern distributed Web applications. The lectures cover the main Web protocols, standards, software architectures, and development tools used in contemporary Web application engineering.
Interactive Teaching (DI): laboratory sessions and practical activities focused on the design, implementation, and testing of Web applications. Through the incremental development of one or more Web applications, students apply the concepts introduced during the lectures, covering the entire software development process, including requirements analysis, architectural design, implementation, Web API integration, testing, and debugging.
Interactive Teaching (DI): learning support activities through the e-learning platform, which provides teaching materials, code examples, exercises, discussion forums, and additional resources to promote active participation, collaboration, and autonomous learning.
Part of the teaching material is also made available through video recordings on the University’s e-learning platform, in accordance with institutional guidelines.
Language of instruction: Italian.
Textbook and teaching resource
There is no single required textbook.
The teaching material includes lecture slides, lecture notes, scientific papers, technical documentation, code examples, and additional learning resources, which will be made available or referenced through the course e-learning platform.
The official documentation of the technologies and frameworks adopted during the course is considered an integral part of the learning material and will be appropriately referenced throughout the lectures.
Semester
First semester
Assessment method
Student learning is assessed through a written examination, which may be complemented by an oral examination.
The written examination consists of:
- multiple-choice questions aimed at assessing the knowledge and understanding of the theoretical concepts covered during the course;
- open-ended questions designed to evaluate the ability to analyze, discuss, and compare Web application architectures, models, and technologies;
- problem-solving and software development exercises aimed at assessing the ability to apply the acquired knowledge to the design, implementation, and testing of Web applications and the integration of software components.
An optional project, carried out individually or in pairs, is also available. The project consists of designing and developing a Web application and is assessed through an individual discussion. It may contribute up to 4 bonus points to the final grade.
Upon request of either the instructor or the student, the written examination may be complemented by an oral examination, which may increase or decrease the final grade.
Midterm Examinations
The written examination may be replaced by two midterm examinations, each consisting of multiple-choice questions, open-ended questions, and practical exercises covering both theoretical topics and laboratory activities.
Students are admitted to the second midterm examination only if they achieve at least 18/32 in the first examination. The final written examination grade is computed as the average of the two midterm examinations. No make-up examinations are provided.
Assessment Criteria
The assessment is based on the student’s ability to:
- demonstrate knowledge and understanding of the principles, architectural models, and technologies covered during the course;
- apply theoretical knowledge to the design and development of Web applications;
- analyze design problems and identify appropriate technical solutions;
- produce technically sound software solutions;
- communicate technical concepts clearly using appropriate scientific and technical terminology.
The final grade is expressed on a 30-point scale and is determined by the written examination (or the two midterm examinations), possibly complemented by the oral examination and by any bonus points obtained through laboratory assignments and the optional project.
Office hours
prof. De Paoli: Wednesday from 10:00 to 12:00 or by appointment by writing to flavio.depaoli@unimib.it
Questions and discussions on teaching topics can be posed using the forums in e-learning.
Key information
Staff
-
Flavio Maria De Paoli
-
Giuseppe Vizzari