WEB AND SERVICE ORIENTED SYSTEMS AND LABORATORY
Module WEB AND SERVICE ORIENTED SYSTEMS

Academic Year 2024/2025 - Teacher: Giuseppe PAPPALARDO

Expected Learning Outcomes

This course, with the integrated Laboratory module, aims at delivering the conceptual foundations and practical skills deemed essential for the development of Web applications and, more generally, distributed systems. Typical architectural solutions to be treated include: the client-server paradigm, remote procedure callsdynamic Web, HTTP request handlers (servlets), the MVC (Model-View-Controller) pattern, and REST API-based Web applications. Development technologies presented are based on the C/Unix and Java platforms and, specifically for the Web, on Java and PHP (and a choice of related frameworks).

General learning objectives and expected results

Knowledge and understanding: students will acquire a precise knowledge and understanding of the conceptual foundations (i.e., fundamental concepts, problem classes and relevant solutions) underlying present-day design and development of distributed systems, including server-side Web applications.
Applying knowledge and understanding: students will become capable of employing solutions and paradigms learned during the course, so as to develop an effective "toolset" of skills, required for the design of distributed systems and server-side Web applications.
Making judgements: students will acquire the ability to assess the relative merits and limits of solutions commonly adopted, within software industry, to tackle problems and scenarios typical of the design of distributed systems and server-side Web applications.
Communication skills: students will learn the terminology and paradigms specific to distributed systems and server-side Web development, and acquire the communication skills required to express and discuss, at a rigorous technical level, problems of interest for the field.
Learning skills: students will become capable of profitaby reading, understanding and making use of available information sources, i.e. textbooks and/or online resources, possibly applying the information acquired to real-world scenarios.

Course Structure

Lectures will mainly consist in live sessions dealing with the development of distributed applications, with a special emphasis on server-side web applications. These will be carried out by the lecturer and replicated, with suggested variations, by students, on their notebooks or lab workstations. As a framework and guidance for such sessions, lecture notes will be displayed during the lecture and shared with students. Notes will provide a precise record of the material presented, as well as pointers to the required reference technical documentation.

Teaching material provided by the instructor will be made available on the University's MS Teams platform (please join the course's team with code rmj14wq).

Instructor's notices and other communications will take place through the course's Telegram channel, which can be joined via https://t.me/+Ug5gTC7rgNrcd4p- 

Mixed-mode or remote teaching may necessitate modifications to previous statements, ensuring nonetheless alignment with the syllabus's planned program.

Required Prerequisites

  • Ability to think algorithmically (from Programming 1 and Programming 2 courses)
  • Knowledge of the main concepts and solutions of concurrent programming (from the Operating Systems course)
  • Knowledge of the main concepts, mechanisms and protocols of the Internet (from the Computer Networks course)

Attendance of Lessons

Attending classes is mandatory.

Detailed Course Content

 The course will introduce the main concepts, paradigms and architectural aspects pertaining the following topics.

Client-server, socket-based applications

  • ​connection-oriented and connectionless communication
  • connection establishment
  • communication semantics
  • sockets in the Internet domain (IP addresses and the DNS)
  • Unix system calls and Java API

Client-server, remote invocation based applications

  • remote invocation semantics 
  • IDL - Interface Description Languages
  • stub generation for remote invocation
  • RPC and RMI

3-tier architecture of a Web system

  • tier 1: the browser client
  • business logic and tier 2 (the web/application server)
  • tier 3: the back-end database

Servlets and web applications

  • the HttpServlet class as a HTTP request handler
  • the Servlet API: main configuration and management methods
  • Cookies and Session management
  • structure and notion of a Web Application
  • IDEs and servlet engines

Dynamic Web with PHP: concepts and technologies

  • PHP: language and environment
  • main PHP functions
  • PHP web apps
  • cookies and sessions in PHP

Web Services (WS) and REST

  • accessing WS through URLs and REST
  • Message exchange languages: JSON
  • Java Spring boot

The Model-View-Controller (MVC) pattern for Web applications

  • MVC and separation of concerns
  • the Web browser as a rich/poor client
  • Laravel MVC

HTTP API clients

  • Javascript clients
  • thin clients

Textbook Information

  1. Lecture notes, made available through the Studium portal, the University's MS Teams platform or GitHub
  2. Deitel H. M., Deitel P. J. Java: How to Program. Pearson.
  3. Java online documentation, https://docs.oracle.com/javase/tutorial/
  4. Java Enterprise Edition online documentation, Tutorial Jakarta EE

Course Planning

 SubjectsText References
1Introduzione ai sistemi concorrenti e distribuiti e al corso.1
2Sockets: main system calls1
3Sockets: clients, read/write. Non-blocking sockets1
4Sockets: IP addresses, DNS, the resolver.1
5Sockets: connectionless communication. send() e receive().1
6Sockets in the Java language.1,2,3
7Java: Remote Method Invocation2,3
8Remote Procedure Call in C1
9Java Servlets1,4
10Web Application: concepts and principles.1,4
11Web services: SOAP1
12Web services: REST and JSON1
13API REST development with Spring Boot1
14PHP Development1
15Laravel MVC1
16Client development for the web and web APIs1

Learning Assessment

Learning Assessment Procedures

Coding exercises on the course topics in laboratory, then oral discussion.

Students with disabilities and/or learning disorders (DSA) must contact the instructor and the CInAP representative at DMI well in advance of the exam date, to inform them of their intention to take the exam with the appropriate compensatory measures.

Grades will normally be awarded using the following criteria:

  • not passed: the student has not acquired basic notions and cannot solve simple practical exercises
  • 18-20: the student barely possesses the basic notions, and has difficulties in tackling practical exercises
  • 21-24: the student understands and exposes acceptably the basic notions, and only correctly solves simple practical exercises
  • 25-27: the student has acquired satisfactorily most course contents, is able to establish relationships among them, and solves most practical exercises with few mistakes
  • 28-30 cum laude: the student masters all course contents and is able to fully and critically establish relationships among them, and manages to thoroughly solve all practical exercises with no significant mistakes.

Examples of frequently asked questions and / or exercises

Client-server socket based clients.
3-tier architectures.
Server-side web application development using servlets.
Integrated Development Environments for Web Apps.
Servlets and servlet containers.
Web applications.
Developing and consuming REST web services.
The JSON data interchange format.
PHP and the web.
The MVC design pattern in the Spring Boot and Laravel frameworks.