WEB AND REAL TIME COMMUNICATION SYSTEMS"
SSD ING-INF/05
DEGREE PROGRAMME: ADVANCED DEGREE (LAUREA MAGISTRALE) IN COMPUTER ENGINEERING (INGEGNERIA INFORMATICA)
ACADEMIC YEAR 2022-2023
GENERAL INFORMATION – TEACHER REFERENCES
TEACHER: PROF. SIMON PIETRO ROMANO
PHONE: +39 081 7683823
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
GENERAL INFORMATION ABOUT THE COURSE
INTEGRATED COURSE (IF APPLICABLE):
MODULE (IF APPLICABLE):
CHANNEL (IF APPLICABLE):
YEAR OF THE DEGREE PROGRAMME (I, II, III): II – ADVANCED DEGREE
SEMESTER (I, II): II
CFU: 6
REQUIRED PRELIMINARY COURSES (IF MENTIONED IN THE COURSE STRUCTURE “ORDINAMENTO”)
PREREQUISITES (IF APPLICABLE)
LEARNING GOALS
The aim of the class is to provide students with advanced notions in the field of both web-based and real-time communication. Students will become familiar with the design and development of complex communication systems, by focusing both on the client-side and on the server-side. They will become acquainted with the networking protocols that form the basis of web-based and real-time communication, as well as learn how to use the standard Application Programming Interfaces (APIs) laying on top of them. This is both a programming class and a networking class. All of the networking protocols and solutions will be first studied in detail and then put into practice through the design and implementation of proof-of-concept prototypes representing real-world application scenarios.
EXPECTED LEARNING OUTCOMES (DUBLIN DESCRIPTORS)
At the end of the class, students will be able to demonstrate advanced knowledge in the field of web-based and real-time communication. They will have a clear understanding of the protocols and APIs representing the state of the art in both fields. Step by step, the class will bring them towards an integrated approach, whereby web-based and real-time communication eventually co-exist in a single, unified scenario adhering to the latest standards issued by both the Internet Engineering Task Force (IETF) and the World Wide Web Consortium (W3C).
They will be ready to enter the professional arena and become part of cutting-edge development teams, by actively contributing to the design and the implementation of advanced communication systems. Successful completion of the class will allow them to effectively apply the acquired knowledge to a number of real-world scenarios requiring advanced engineering capabilities, by putting together their networking competences and their advanced programming skills.
Knowledge and understanding
Students need to show ability to know and understand problems related to both the communication and the programming issues associated with the design and development of complex interoperating distributed systems.
They need to elaborate arguments related to the relationship between communication protocols, synchronous and asynchronous interaction, client-side, server-side and peer-to-peer programming, by embracing an engineering approach and looking at them in an integrated fashion. The class provides students with advanced knowledge in the field of web-based real-time communication, by also illustrating how to leverage both methodological and practical tools in order to design and implement effective, interoperable, scalable and secure real-time multimedia communication systems that are compliant with state-of-the-art standard protocols and APIs. Such tools will allow students to grasp the causal connections among network-based communication and event-based programming, as well as understand the implications of the adoption of an agile design and development paradigm for the realization of advanced communication systems.
Applying knowledge and understanding
Students need to show ability to design complex systems involving distributed components that exchange multiple media in a real-time fashion. They will have to demonstrate a clear understanding of the main networking protocols offering support to such systems for all what concerns their communication requirements. They will have to demonstrate advanced programming skills, with special reference to the use of the standard APIs that are offered to programmers both on the client-side and on the server-side. The course delivers skills and tools needed to apply knowledge in practice, favoring the ability to use a methodological approach that properly integrates different technologies (as well as different programming languages) in a unified framework allowing to effectively look after the many facets of a complex communication system.
COURSE CONTENT/SYLLABUS
The class will proceed step-wise towards the final goal of designing and implementing integrated systems putting together the most up-to-date solutions in the fields of web-based and real-time communication. Web-based communication protocols and technologies will be first introduced, by focusing both on the communication and on the programming aspects. Server-side web application development will be analyzed in detail, with the help of real-world examples associated with state-of-the-art frameworks and programming languages. Client-side web programming through the JavaScript language will be discussed, with a focus on both the synchronous and the asynchronous paradigm. The XML (eXtensible Markup Language) language and APIs will be introduced and analyzed in depth. The focus will then move to real-time communication, by looking at both the data layer and the signaling layer. State-of-the-art streaming technologies will be discussed in detail and comparatively analyzed. Network reachability and NAT (Network Address Translation) traversal issues will be presented, together with the standard protocols that have been designed in order to effectively deal with them. A detailed overview of the most up-to-date Instant Messaging applications and related standard protocols will be presented. Finally, the class will show how to put things all together in an integrated framework that leverages both the IETF RtcWeb and the W3C WebRTC standard protocols and APIs in order to realize next-generation web-enabled real-time communication scenarios.
Syllabus:
- Web-based communication basics: HTTP protocol deep-dive
- Server-side programming basics: Common Gateway Interface (CGI)
- Server-side programming in Java through Java servlets
- Server-side programming in Python through the Flask framework
- Server-side programming in Java through the Spring Boot framework
- Client-side programming with JavaScript
- Asynchronous JavaScript and XML (AJAX) and the Fetch API
- The XML language
- XML programming
- Server-side programming in JavaScript with Node.JS
- Web-based interaction through WebSockets
- The Real-time Transport Protocol (RTP)
- Voice over IP (VoIP) applications and the Session Initiation Protocol (SIP)
- Streaming protocols and technologies:
o Real Time Streaming Protocol (RTSP)
o MPEG-DASH (Dynamic Adaptive Streaming over HTTP)
o Real Time Messaging Protocol (RTMP)
o Peer-to-peer approaches
- NAT-traversal protocols:
o Session Traversal Utilities for NAT (STUN)
o Traversal Using Relays Around NAT (TURN)
o Interactive Connectivity Establishment (ICE)
- Instant Messaging protocols and technologies:
o Internet Relay Chat (IRC)
o Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions (SIP/SIMPLE)
o eXtensible Messaging and Presence Protocol (XMPP)
o WebRTC-enabled IM through data channels
o Web-socket enabled IM
o Message Queuing Telemetry Transport (MQTT) enabled IM
o Advanced Message Queuing Protocol (AMQP) enabled IM
o Simple Text Orientated Messaging Protocol (STOMP) enabled IM
o The RabbitMQ library
o Secure, decentralized real-time communication through Matrix
- User interface design and implementation through React.js
- Using native components instead of web components with React Native
- WebRTC: the new frontier of real-time communications in the web
- The Janus WebRTC media server and gateway
READINGS/BIBLIOGRAPHY
6. Official references like, e.g., Requests For Comments (RFC), available at: https://www.ietf.org
7. “Real-Time Communication with WebRTC”, Salvatore Loreto, Simon Pietro Romano, Released May 2014, Publisher: O'Reilly Media, Inc. ISBN: 9781449371876
8. Slides and additional materials provided by the teacher and made available on the official sites associated with the class
TEACHING METHODS
Teacher will use a hands-on approach for the entire duration of the class. All of the course topics will be both presented in theory and further analyzed through practical examples.
All of the students will have to work on a practical project, either individually or in groups, focused on an in-depth study of one or more of the topics addressed during the class.
EXAMINATION/EVALUATION CRITERIA
a) Exam type:
Exam type
written and oral
only written
only oral X
project discussion X
other
In case of a written exam, questions refer to: (*) Multiple choice answers
Open answers
Numerical exercises
(*) multiple options are possible
b) Evaluation pattern:
[this field needs to be filled in only when there are different weights among written and oral exams, or among modules if this refers to an integrated course]
- 35% of the final mark will depend on an evaluation of the practical project developed by the student (either individually or in group). The project itself will have to be delivered (with a fully-fledged documentation, including source code, if applicable) to the teacher at least seven days in advance of the oral examination date;
- 65% of the final mark will depend on the results of the oral interview.