Checking date: 09/07/2020

Course: 2020/2021

Distributed Systems
Study: Bachelor in Computer Science and Engineering (218)

Coordinating teacher: GARCIA CARBALLEIRA, FELIX

Department assigned to the subject: Department of Computer Science and Engineering

Type: Compulsory
ECTS Credits: 6.0 ECTS


Students are expected to have completed
Operating Systems Computer networks
The main objective of the course is to describe the main concepts needed for designing and developing distributed systems and applications. 1. Generic competences: - Capacity of analysis and synthesis (PO a, b, c, e) - Capacity of organization and scheduling (PO c, d) - Problem solving (PO a, b, c, g) - Capacity to apply theoretical concepts (PO a, c) 2. Specific competences: a. Cognitive (PO a,c e,j) - Concepts of a distributed system - Main hardware platforms used in distributed systems - Understanding the concept of middleware and the services provided by a middleware - Techniques for developing distributed applications - Storage systems used in distributed systems - Techniques for developing fault tolerant distributed systems - Knowledge and application of features, functionality and structure of Distributed Systems, Computer Networks and Internet-based design and implement distributed applications (CECRI11)     - Ability to design and implement software and communication systems (CEIC4) b. Procedimental/Instrumental (PO a, b, c, g, j, k) - Designing and developing a distributed system and a distributed application. - Designing and developing distributed applications using the main TCP/IP services, RPC or services provided by middlewares. - Using tools (programming languages and operating systems) appropriates for developing distributed systems. - Designing and developing distributed applications using middleware services and remote procedure calls. - Evaluating the performance of a distributed application - Researching and looking for solutions to new problems related to distributed systems. c. Attitude (PO: c, e) - Creativity - Critical vision of current distributed systems - Motivation - Interest for acquiring new knowledge and information
Description of contents: programme
The basic concepts of this course are: concurrency; interprocess communication; middleware; RPC; distributed file systems; distributed applications; fault tolerance; web services; Content: 1. Introduction - Basic concepts - Interconnection networks - Advantages of distributed systems - Distributed computing paradigms - Design of distributed systems 2. Process communication and synchronization - Communication mechanisms in shared memory systems - Communication mechanisms in distributed memory systems - POSIX services - Threads in Java 3. Message passing and client-server applications - Communication model using message passing - Design aspects - POSIX queue messages - Client-server applications - Design of concurrent servers 4. Communication using sockets - Communication model with sockets - POSIX sockets API - Java sockets API - Design guide of client-servers applications using sockets 5. Remote procedure call - RPC behavior - Interface definition language - Marshaling and message transfer - ONC-RPC -Remote method invocation in JAVA (RMI) 6. Web services - HTTP protocol - SOAP - Development of web services with JAX-WS - Development of web services with gSOAP 7. Distributed services - Name services - Synchronization in distributed systems - Physical and logical clocks - Distributed mutual exclusion - Algorithms of election - Multicast 8. Distributed storage systems - Distributed file systems structure - File and directory services - Implementation of distributed file systems - Example: NFS - Shared disks file systems - Parallel file systems - Storage area networks 9. Fault tolerant in distributed systems - Fault tolerant concepts - Software fault tolerance - Fault detectors - Replication - Protocols of consensus
Learning activities and methodology
The teaching methodology includes: 1. Theoretical lectures 1 ECTS (PO a, b, c, e, j) - Distributed systems concepts - Basic text books will be also recommended 2. Projects 1.5 ECTS (PO a, b, c, d, e, g, k) - Several projects are made along the course applying the concepts shown in theoretical lectures. Partial teacher support in computer labs. - Students have to analyze the requirements and provide a working solution - The projects are developed in team of 2 students, in order to promote the collaborative work 3. Problem solving with the teacher 1 ECTS (PO a, c, e) - By solving exercises and case of studies in a participatory way. 4. Student work 2 ECTS. (PO a, c, e, g, k) - Self-study to understand the theoretical concepts - Homework for solving proposed exercises 5. Exams 0.5 ECTS (PO a, c, e, g) - Midterm and final exam
Assessment System
  • % end-of-term-examination 20
  • % of continuous assessment (assigments, laboratory, practicals...) 80
Basic Bibliography
  • G. Coulouris, J. Dollimore, T. Kindberg, G. Blair. Distributed Systems, Concepts and design. 5ª edition. 2011. Addison-Wesley.
Recursos electrónicosElectronic Resources *
Additional Bibliography
  • Distributed Systems: principles and paradigms. Andrew S. Tanenbaum , Maarten van Steen. Pearson.
  • F. García, J. Carretero, A. Calderón, J. Fernández, J. M. Pérez. Problemas resueltos de programación en C. Thomson.
  • L. H. Etzkorn. Introduction to Middleware: Web Services, Object Components, and Cloud Computing. CRC Press. 2017
  • Pankaj Jalote. Fault Tolerance in Distributed Systems. Prentice-Hall.
  • Richard Stevens. UNIX Network Programming. Prentice Hall.
Detailed subject contents or complementary information about assessment system of B.T.
(*) Access to some electronic resources may be restricted to members of the university community and require validation through Campus Global. If you try to connect from outside of the University you will need to set up a VPN

The course syllabus and the academic weekly planning may change due academic events or other reasons.

More information: