-
Presentation
Presentation
The Distributed Computing course focuses on the study and development of modern distributed applications, combining theoretical foundations with a strong practical component. The main characteristics of these systems are analyzed, such as scalability, consistency, fault tolerance, resilience, and security, as well as the architectural and implementation challenges involved. In practice, students use Java and Spring Boot to build microservices that communicate through REST APIs and Apache Kafka, with persistence in relational databases (PostgreSQL) and document-oriented databases (MongoDB). Concepts of containerization and deployment with Docker, testing in distributed systems, and advanced coordination patterns such as SAGAs and eventual consistency are also explored. The course culminates in a capstone project, where students develop a complete system, applying the knowledge acquired and consolidating the technical and transversal skills essential for the professional market.
-
Class from course
Class from course
-
Degree | Semesters | ECTS
Degree | Semesters | ECTS
Bachelor | Semestral | 5
-
Year | Nature | Language
Year | Nature | Language
3 | Mandatory | Português
-
Code
Code
ULHT260-7348
-
Prerequisites and corequisites
Prerequisites and corequisites
Not applicable
-
Professional Internship
Professional Internship
Não
-
Syllabus
Syllabus
1. Introduction. Characterization of Distributed Systems: requirements, architecture and functionalities 2. Architectures and Distributed Communication Models. Systems architectures. Software Levels 3. Communication between Distributed Processes (IPC). Characteristics of interprocess communication. Invocation, parameters and heterogeneity of data 4. Remote Invocation and Distributed Objects. RPC: Execution Model. Interface definition language (IDL) and parameter passing. Execution platforms: Sun RPC, Java RMI 5. Naming and Directory Services. Types of Names. Naming Spaces. Directory Services (Web, X.500, LDAP) 6. Web Services (WS). Web Services Execution Model (WS). The SOAP protocol. Service Definition Languages (WSDL) 7. Security. Security Model. Authentication. Access control 8. Distributed File Systems. Distributed FS architectures. Implementations: NFS and AFS 9. Transactions. Transactional model. Transaction ACID properties. Distributed Transactions. 2-phase-commit protocol
-
Objectives
Objectives
By the end of the course, students are expected to understand the fundamental concepts and main challenges of distributed computing, with a particular focus on performance, reliability, resilience, and security. They should be able to apply design techniques and best practices to model distributed solutions suited to different contexts, develop microservices with synchronous and asynchronous communication, and integrate data persistence with coordination mechanisms across services. In addition, students will gain hands-on experience with methodologies and tools that support the lifecycle of distributed systems, including containerization, monitoring, and testing strategies. The course also aims to ensure that students demonstrate transversal skills such as teamwork, technical communication, and problem-solving in complex environments, consolidating solid preparation for real-world challenges in distributed software development and architecture.
-
Teaching methodologies and assessment
Teaching methodologies and assessment
The course combines theoretical and practical methodologies in an integrated way. On the theoretical side, regular mini-tests are conducted to ensure continuous progress, complemented by a final exam for knowledge consolidation. On the practical side, a learning-by-doing approach is adopted, with the progressive development of microservices, weekly checkpoints, code reviews, and continuous feedback, fostering active and iterative learning. Innovative methods such as peer review between groups, collaborative problem-solving, and the use of professional development tools (GitHub, Docker, CI/CD) are also introduced, bridging theory and practice while preparing students with both technical expertise and transversal skills aligned with real-world industry practices.
-
References
References
Coulouris, Dollimore & Kindberg, Distributed Systems: Concepts and Design, 5th Edition, Addison-Wiley, 2011, ISBN 0132143011.
-
Office Hours
Office Hours
-
Mobility
Mobility
No