WEB AND SERVICE ORIENTED SYSTEMS AND LABORATORYModule WEB AND SERVICE ORIENTED SYSTEMS
Academic Year 2024/2025 - Teacher: Giuseppe PAPPALARDOExpected 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 calls, dynamic 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
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
- Lecture notes, made available through the Studium portal, the University's MS Teams platform or GitHub
- Deitel H. M., Deitel P. J. Java: How to Program. Pearson.
- Java online documentation, https://docs.oracle.com/javase/tutorial/
- Java Enterprise Edition online documentation, Tutorial Jakarta EE
Course Planning
Subjects | Text References | |
---|---|---|
1 | Introduzione ai sistemi concorrenti e distribuiti e al corso. | 1 |
2 | Sockets: main system calls | 1 |
3 | Sockets: clients, read/write. Non-blocking sockets | 1 |
4 | Sockets: IP addresses, DNS, the resolver. | 1 |
5 | Sockets: connectionless communication. send() e receive(). | 1 |
6 | Sockets in the Java language. | 1,2,3 |
7 | Java: Remote Method Invocation | 2,3 |
8 | Remote Procedure Call in C | 1 |
9 | Java Servlets | 1,4 |
10 | Web Application: concepts and principles. | 1,4 |
11 | Web services: SOAP | 1 |
12 | Web services: REST and JSON | 1 |
13 | API REST development with Spring Boot | 1 |
14 | PHP Development | 1 |
15 | Laravel MVC | 1 |
16 | Client development for the web and web APIs | 1 |
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
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.