DISTRIBUTED PROGRAMMING

Francesco CAUTERUCCIO DISTRIBUTED PROGRAMMING

0622700074
DEPARTMENT OF INFORMATION AND ELECTRICAL ENGINEERING AND APPLIED MATHEMATICS
EQF7
COMPUTER ENGINEERING
2024/2025

OBBLIGATORIO
YEAR OF COURSE 2
YEAR OF DIDACTIC SYSTEM 2022
AUTUMN SEMESTER
CFUHOURSACTIVITY
324LESSONS
324EXERCISES
Objectives
THE COURSE EXPLORES DISTRIBUTED SOFTWARE ARCHITECTURES AND TECHNOLOGIES FOR THE DEVELOPMENT OF APPLICATIONS ACCORDING TO THE SERVICE-ORIENTED ARCHITECTURE PARADIGM.

KNOWLEDGE AND UNDERSTANDING
INTRODUCTION TO THE DISTRIBUTED PROGRAMMING AND LAYERED, CLIENT-SERVER, PEER-TO-PEER ARCHITECTURES. MECHANISMS FOR DIRECT COMMUNICATION: SOCKETS, RPC, RMI. WEB SERVICES AND SERVICE-ORIENTED ARCHITECTURE. RESTFUL ARCHITECTURES.

APPLYING KNOWLEDGE AND UNDERSTANDING
DESIGN AND IMPLEMENT DISTRIBUTED APPLICATIONS BASED ON THE MAIN ARCHITECTURAL PARADIGMS (CLIENT-SERVER, PEER-TO-PEER, ETC.) THAT EXPORT WEB SERVICES AND/OR CAN INTERFACE WITH THIRD-PARTY WEB SERVICES.
Prerequisites
THE COURSE ASSUMES THE ABILITY TO WRITE JAVA PROGRAMS AND THE KNOWLEDGE OF COMPUTER NETWORK ARCHITECTURES AND INTERNET PROTOCOLS.
Contents
DIDACTIC UNIT 1: INTRODUCTION TO DISTRIBUTED PROGRAMMING AND ARCHITECTURAL MODELS
(HOURS LECTURE / PRACTICE / LABORATORY 4/0/0)
- 1 (2 HOURS LECTURE): INTRODUCTION TO DISTRIBUTED PROGRAMMING AND LAYERED ARCHITECTURES, CLIENT-SERVER, PEER-TO-PEER. MIDDLEWARE CONCEPT.
- 2 (2 HOURS LECTURE): JAVA I/O, PROCESSES AND THREADS IN DISTRIBUTED SYSTEMS.
KNOWLEDGE AND UNDERSTANDING: UNDERSTANDING OF DISTRIBUTED PROGRAMMING CONCEPTS AND ARCHITECTURAL PATTERNS.
APPLYING KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO PROGRAM PROCESSES AND THREADS IN DISTRIBUTED SYSTEMS.

DIDACTIC UNIT 2: COMMUNICATION PARADIGMS IN A DISTRIBUTED SYSTEM: COMMUNICATION BETWEEN PROCESSES
(HOURS LECTURE / PRACTICE / LABORATORY 6/6/0)
- 1 (2 HOURS LECTURE): TCP CONNECTION
- 2 (1 HOUR LECTURE /1 HOUR PRACTICE): EXAMPLES OF TCP PROTOCOL APPLICATIONS (CLIENT/SERVER CHAT DESIGN, FILE TRANSFER SERVICE, ECHO SERVER UPPERCASE)
- 3 (2 HOURS PRACTICE): EXAMPLES OF TCP PROTOCOL APPLICATIONS (CLIENT/SERVER CHAT DESIGN, FILE TRANSFER SERVICE, ECHO SERVER UPPERCASE)
- 4 (2 HOURS LECTURE): UDP CONNECTION
- 5 (1 HOUR LECTURE /1 HOUR PRACTICE): EXAMPLES OF APPLICATIONS OF THE UDP PROTOCOL (DESIGNING STUDENT CLASSROOM ATTENDANCE MANAGEMENT, DESIGNING A "CONNECT FOUR" TYPE GAME)
- 6 (2 HOURS PRACTICE): EXAMPLES OF APPLICATIONS OF THE UDP PROTOCOL (DESIGNING STUDENT CLASSROOM ATTENDANCE MANAGEMENT, DESIGNING A "CONNECT FOUR" TYPE GAME)
KNOWLEDGE AND UNDERSTANDING: UNDERSTANDING PROTOCOLS AT THE TRANSPORT LAYER (SOCKET PROGRAMMING)
APPLYING KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO DEVELOP DISTRIBUTED APPLICATIONS THAT USE THESE PROTOCOLS.

DIDACTIC UNIT 3: COMMUNICATION PARADIGMS IN A DISTRIBUTED SYSTEM: REMOTE INVOCATION
(HOURS LECTURE / PRACTICE / LABORATORY 4/2/0)
- 1 (2 HOURS LECTURE): INTRODUCTION TO DISTRIBUTED OBJECTS AND REMOTE INVOCATIONS. RPC (REMOTE PROCEDURE CALL), RMI (REMOTE METHOD INVOCATION).
- 2 (2 HOURS LECTURE): JAVA RMI
- 3 (2 HOURS PRACTICE): EXAMPLES OF PROGRAMMING WITH RMI (CLIENT/SERVER APPLICATION FOR MANAGING A CONFERENCE WITH RMI)
KNOWLEDGE AND UNDERSTANDING: UNDERSTANDING THE REMOTE COMMUNICATION PARADIGM IN DISTRIBUTED SYSTEMS.
APPLYING KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO DEVELOP DISTRIBUTED APPLICATIONS THAT USE REMOTE INVOCATION TECHNIQUES FOR COMMUNICATION (RMI AND RPC).

DIDACTIC UNIT 4: WEB SERVICE
(ORE LEZIONE/ PRACTICE / LABORATORY 6/6/0)
- 1 (2 HOURS LECTURE): WEB SERVICES: SOAP (SIMPLE OBJECT ACCESS PROTOCOL)
- 2 (1 HOUR LECTURE /1 HOURS PRACTICE): JAVA API FOR XML WEB SERVICES (JAXWS)
- 3 (2 HOURS PRACTICE): PROGRAMMING WEB SERVICES IN JAVA, JAX-WS
- 4 (2 HOURS LECTURE): RESTFUL ARCHITECTURES. ACCESSING RESTFUL WEB SERVICES USING THE HTTP PROTOCOL.
- 5 (1 HOUR LECTURE /1 HOURS PRACTICE): DEFINING AND USING WEB SERVICES WITH THE JAXRS FRAMEWORK
- 6 (2 HOURS PRACTICE): RESTFUL WEB SERVICES PROGRAMMING
KNOWLEDGE AND UNDERSTANDING: UNDERSTANDING SOAP AND REST WEB SERVICES AND THE STANDARDS USED.
APPLYING KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO DEVELOP SOAP AND REST-TYPE WEB SERVICES.

DIDACTIC UNIT 5: DEFINITION AND DESIGN OF A DISTRIBUTED SYSTEM
(HOURS LECTURE / PRACTICE / LABORATORY 4/10/0)
- 1 (2 HOURS LECTURE): DESIGN OF A DISTRIBUTED SYSTEM.
- 2 (2 HOURS LECTURE): DESIGN: SPECIFIC DEFINITION OF REQUIREMENTS AND FUNCTIONS
- 3 (2 HOURS PRACTICE): PROJECT: ARCHITECTURE DEFINITION
- 5 (2 HOURS PRACTICE): PROJECT: DEFINITION OF COMMUNICATION PROTOCOLS
- 6 (2 HOURS PRACTICE): PROJECT: CODING
- 7 (2 HOURS PRACTICE): PROJECT: CODING
- 8 (2 HOURS PRACTICE): PROJECT: CODING
KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO DEFINE AND DESIGN A DISTRIBUTED SYSTEM.
APPLYING KNOWLEDGE AND UNDERSTANDING: KNOW HOW TO DEVELOP A DISTRIBUTED SYSTEM.

TOTAL LECTURE/PRACTICE/LABORATORY HOURS 24/24/0
Teaching Methods
THE COURSE INCLUDES FRONTAL LESSONS FOR 24 HOURS AND EXERCITATIONS FOR 24 HOURS.

THE EXERCITATIONS WILL INCLUDE THE DEVELOPMENT OF EXAMPLE APPLICATIONS TO EXEMPLIFICATE THE CONCEPTS INTRODUCED IN THE LESSONS.

TO ACCESS THE FINAL VERIFICATION, IT IS MANDATORY TO ATTEND AT LEAST 70% OF THE FRONTAL ACTIVITIES.
Verification of learning
THE FINAL TEST IS AIMED AT VERIFYING THE KNOWLEDGE AND UNDERSTANDING OF THE COURSE CONTENTS AND THE ABILITY TO APPLY THEM TO THE DESIGN AND DEVELOPMENT OF A DISTRIBUTED SYSTEM.

STUDENTS WILL BE ASSIGNED A GROUP PROJECT WORK INVOLVING THE DESIGN AND REALIZATION OF A DISTRIBUTED SYSTEM. THE EXAM WILL CONSIST OF A DISCUSSION OF THE PROJECT AND AN ORAL INTERVIEW ON THE CONTENTS OF THE COURSE.

IN THE FINAL VOTE, THE PROJECT EVALUATION WILL WEIGH 60% AND THE ORAL INTERVIEW 40%.
Texts
SUGGESTED BOOKS:
* COULOURIS ET AL.: DISTRIBUTED SYSTEMS: CONCEPTS AND DESIGN, FIFTH EDITION.

LECTURE NOTES ON THE ELEARNING PLATFORM.
More Information
THE COURSE IS HELD IN ITALIAN.
Lessons Timetable

  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2024-10-16]