28659 - Web Technologies T (P-Z)

Course Unit Page


This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.

Industry, innovation and infrastructure

Academic Year 2022/2023

Learning outcomes

Skills, knowledge, and ability to apply the primary existing models and tools for the design, implementation, deployment, and optimization of Web-based systems and applications.

Course contents

- The origins of the Web: the static model
Short historical introduction
The originary World Wide Web model
Primary model elements: the HTTP protocol and the URIs
Languages for page content description: HTML and CSS

- The evolution of the Web model
Towards a more dynamic approach: personalization, state, sessions, and conversations
State management
Server-side programming: Servlet, JSP
Client-side programming: Javascript, Ajax

- Towards Enterprise-oriented server-side environments
Multi-layer architectures: horizontal and vertical distribution, business logics separation, component-container models
Rapid notes on Model View Controller for the Web and on Java Model 2
Enterprise Java Beans as a notable example of technology compliant with the heavy container model
Spring as a notable example of technology compliant with the lightweight container model

- Emerging client-side technologies: single page applications, react.js, and directions of evolution of front-end technologies

- Emerging server-side technologies: event-oriented and stateless models, node.js, asynchronous I/O management

- Upgrading towards HTTP2/0: Websocket motivations and mechanisms, in Javascript (client side) and Java (server side)


For information about the technical contents and the teaching material of the current academic year, please refer to:




For information about the technical contents and the teaching material of the previous academic year, please see:



Primary source of material, information, and exercises: the lecturing slides available at the course Website


V. Della Mea, L. Di Gaspero, I. Scagnetto, Programmazione Web Lato Server, 2a edizione, Apogeo, 2011
V. Roberto, M. Frailis, A. Gugliotta, P. Omero, Introduzione alle Tecnologie Web, McGraw-Hill, 2010

W3C, HTML, CSS, javascript
World Wide Web Consortium: http://www.w3.org [http://www.w3.org/]
HTML 4.01 Specifications: http://www.w3.org/TR/html4/
World Wide Web Consortium CSS Reference: http://www.w3.org/Style/CSS/
World Wide Web Consortium CSS2 Specifications: http://www.w3.org/TR/REC-CSS2/
Client-Side JavaScript Guide: http://www.w3schools.com/js/default.asp

Enterprise Architectures and Solutions 
A.L. Rubinger, B. Burke, Enterprise JavaBeans 3.1, 6th ed., O’Reilly, 2010
C. Walls, Spring in Action, 3rd ed., Manning, 2011
Spring: http://www.springsource.org/

Client- and Server-side Evolutionary Trends
A. Banks, Learning React: Functional Web Development With React and Redux, O’Reilly, 2017
S. Powers, Node: Moving to the Server Side, O’Reilly, 2016
A. Lombardi, WebSocket: Lightweight Client-Server Communications, O’Reilly, 2014
React: https://reactjs.org/docs/getting-started.html
Node: https://nodejs.org/en/ §Websocket: https://javascript.info/websocket

Teaching methods

The course lectures are held in presence in the assigned teaching rooms with the support of slide projection (all slides are available at the course Web site). Lecturing is integrated with practical exercises, led by the Professors in assigned labs (about 30% of the overall course time). Each lab exercise deals with a specific topic presented during the "regular" teaching lectures, by proposing a practical programming activity (which calls for the usage of specific programming IDEs and tools).

All the lectures are taught in Italian.


By considering the type of programming activities and the adopted methodologies within this course, the participation and attendance of this course suggest that all students preliminarily attend the modules 1 and 2 of the e-learning course about security in study environments [https://elearning-sicurezza.unibo.it/].

Assessment methods

The verification and evaluation of the acquired skills is performed via a final exam that checks the reached level of knowledge and practical programming abilities via a programming activity with duration = 3h (open book, with the possibility to access notes, books, and previously developed code), followed by an oral interview for the students who have passed the programming part.

The programming part of the exam usually consists of 3 exercises (11 points each). To be admitted to the programming exam, thee is the need, as usual, to the associated list published in the AlmaEsami Web application.

To pass the programming part of the exam and to be admitted to the oral interview, it is necessary to have a score >= 18 points (out of an overall maximum total of 33), equally distributed over the 3 exercises, i.e., at least 6 points for the first exercise, at least 6 points for the second exercise, and at least 6 points for the third exercise.

The oral interview usually consists of a few rapid questions about the whole programme of the course; it can allow to achieve a score in the +4, -4 range, starting from the score obtained in the programming part of the exam.

In the oral interview the maximum score will be assigned to the students who will exhibit an excellent knowledge and ability to use all the contents of the course, by illustrating them with good language property and by being able to solve even problems that have not been previously addressed during the lectures. The minimum score will be assigned, on the opposite, because of the insufficient knowledge of key concepts of the course, because of the lack of proper technical language, and because of insufficient abstraction capability on the course topics.

Teaching tools

In the "regular" teaching activities the course will exploitpresentation slides (all slides will be available at the course Web site).

In labs, the course will use development and execution support tools for implementing and running the exercises (e.g., Eclipse, Tomcat,  Chrome Developer Tools, and node.js).

Students are invited to get used and to know how to practically employ the development and support tools that will be introduced during the course lectures.


Links to further information


Office hours

See the website of Paolo Bellavista

See the website of Giuseppe Di Modica