Distributed Systems

Year
3
Academic year
2022-2023
Code
01000241
Subject Area
Computer Science
Language of Instruction
Portuguese
Mode of Delivery
Face-to-face
Duration
SEMESTRIAL
ECTS Credits
6.0
Type
Compulsory
Level
1st Cycle Studies

Recommended Prerequisites

Object-Oriented Programming, Operating Systems, Computer Networks

Teaching Methods

This course includes theoretical lectures with detailed exposition, using visual aids, of concepts, principles and fundamental techniques of Distributed Systems, accompanied by examples designed to increase students' interest in theoretical concepts and demonstrate their practical application. The course also includes practical classes in which students, with the guidance of the teacher, solve exercises that require combining theoretical concepts and promote critical thinking with respect to more complex problems. The practical classes are also dedicated to supporting the practical projects.

Learning Outcomes

The Distributed Systems course provides alumni with an encompassing approach on concurrent programming, algorithms, protocols and fundaments of modern distributed systems. Students shall acquire competences on the development of concurrent and distributed applications using diverse technologies, and shall be able to understand and integrate knowledge on fundamental techniques for the design of concurrent and distributed applications in industrial settings and for the Internet. The course aims to promote competence in analysis and synthesis, knowledge in computer science regarding the subject of study, problem-solving ability, autonomous learning competence, and competence in applying knowledge in practice.

Work Placement(s)

No

Syllabus

- Concurrency
* Organization of a computer
* Memory Hierarchy
* Functions of an Operating System
* Processes and threads
* Concurrent programming and thread synchronization
* Concurrent programming libraries

- Distributed Application Design
* Introduction to Distributed Systems
* Challenges in the development of distributed applications
* The Client/Server model
* Multi-threaded TCP and UDP sockets programming

- Middleware and Web
* Overview of Middleware
* The RPC model
* Fault treatment in the RPC model and RPC semantics
* Distributed programming using Java RMI
* The HTTP protocol
* Distributed applications for the Internet
* Web programming
* Web Services

- Distributed Services
* Security in Distributed Systems
* Naming and Directory Services
* Distributed File Systems
* Clock synchronization
* Causal and total order
* Server replication and high-availability solutions
* Peer-to-peer systems

Head Lecturer(s)

Raul André Brajczewski Barbosa

Assessment Methods

Assessment
Project: 40.0%
Exam: 60.0%

Bibliography

Bibliografia necessária | Required bibliography:

- Distributed Systems: Concepts and Design, 5th edition, G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, Pearson Education, 2011.

Bibliografia suplementar | Supplemental bibliography:

- Operating System Concepts: 8th Edition, by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. John Wiley & Sons, ISBN 9780470233993

- Distributed Systems: Principles and Paradigms, A. S. Tanenbaum, M. van Steen, Prentice Hall, 2001..