Checking date: 21/02/2025


Course: 2024/2025

Distributed Systems
(15754)
Bachelor in Computer Science and Engineering (Study Plan 2022) (Plan: 489 - Estudio: 218)


Coordinating teacher: GARCIA CARBALLEIRA, FELIX

Department assigned to the subject: Computer Science and Engineering Department

Type: Compulsory
ECTS Credits: 6.0 ECTS

Course:
Semester:




Requirements (Subjects that are assumed to be known)
Operating Systems (Course 2 - Semester 2) Computer networks (Course 3 - Semester 1)
Objectives
The main objective of the course is to describe the main concepts needed for designing and developing distributed systems and applications.
Learning Outcomes
RA2.2: Ability to identify, formulate and solve engineering problems in their field of study; to select and apply relevant methods from established analytical, computational and experimental methods; to recognise the importance of non-technical societal, health and safety, environmental, economic and industrial constraints. RA3.1: Ability to develop and design complex products (devices, artefacts, etc.), processes and systems in their field of study to meet established requirements, that can include an awareness of non-technical ¿ societal, health and safety, environmental, economic and industrial ¿ considerations; to select and apply relevant design methodologies. RA3.2: Ability to design using some awareness of the forefront of their engineer ing specialisation. RA7.1: Ability to communicate effectively information, ideas, problems and solutions with engineering community and society at large. CG7: Be able to present and discuss proposals in a team work environment, demonstrating personal and social skills that allow him/her to assume different responsibilities within them. CGO6: Ability to conceive and develop centralised or distributed computer systems or architectures integrating hardware, software and networks in accordance with the knowledge acquired. CECRI11: Knowledge and application of the characteristics, functionalities and struc- ture of Distributed Systems, Computer Networks and Internet and design and implement applications based on them. CECRI13: Knowledge and application of the tools necessary for the storage, processing and access to information systems, including web-based ones. CECRI14: Knowledge and application of the fundamental principles and basic techniques of parallel, concurrent, distributed and real-time programming. CTE6: Ability to analyse and evaluate computer architectures, including parallel and distributed platforms, and develop and optimise software for them. CTE7: Ability to design and implement system and communications software. CTE8: Ability to analyse, evaluate and select the most appropriate hardware and software platforms for the support of embedded and real-time applications.
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 Python 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 - Python 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 - RPCs in Python 6. Web services - HTTP protocol - SOAP - Development of web services 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
Learning outcomes: R1 Knowledge and understanding: have basic knowledge and understanding of the scientific and technological foundations of Computer Engineering, as well as a specific knowledge of computer science, computer engineering and information systems. R2 Engineering Analysis: Be able to identify Computer Engineering problems, recognize their specifications, establish different resolution methods and select the most appropriate one for their solution, taking into account the social, human health, environmental, and commercial constraints applicable in each case. R3 Engineering Design: Be able to perform engineering designs according to their level of knowledge and understanding that meet the required specifications in collaboration with other engineers and graduates. Design encompasses devices, processes, methods and objects, and specifications broader than strictly technical, including social awareness, health and safety, environmental and commercial considerations. R5 Engineering Applications: Graduates will be able to apply their knowledge and understanding to solve problems, conduct research, and design devices or processes in the field of Computer Engineering according to criteria of cost, quality, safety, efficiency, environmental friendliness, and ethical implications. These skills include the knowledge, use and limitations of computer systems, process engineering, computer architectures, and the use of computer systems in the field of computer engineering. They aim to achieve the specific cognitive competences of the subject, as well as the transversal competences capacity of analysis and abstraction. * Practical classes: 1 ECTS. They aim to initiate the development of the specific instrumental competences, as well as the transversal competences problem solving and application of knowledge. * Continuous evaluation exercises: 1,5 ECTS. Initiated during the practical classes and completed outside of them, they aim to complete the development of the specific instrumental competences and to initiate the development of the specific attitudinal competences, as well as the transversal competences problem solving and application of knowledge. * Practical work: 2 ECTS. Developed without the presence of the teacher, they aim to complete and integrate the development of all the specific and transversal competences, in the resolution of two practical cases where the approach to the problem, the choice of the method of resolution, the results obtained and their interpretation are well documented. * Tutorials: TUTORIALS. Individualized assistance (individual tutorials) or in group (collective tutorials) to the students by the professor. * Final exam: 0.5 ECTS. It aims to influence and complement the development of specific cognitive and procedural skills. It reflects especially the use of the master classes.
Assessment System
  • % end-of-term-examination 20
  • % of continuous assessment (assigments, laboratory, practicals...) 80

Calendar of Continuous assessment


Extraordinary call: regulations
Basic Bibliography
  • G. Coulouris, J. Dollimore, T. Kindberg, G. Blair. Distributed Systems, Concepts and design. 5ª edition. 2011. Addison-Wesley.
  • Maarten van Steen, Adrew S. Tanenbaum. Distributed Systems, 4ed.. Maarten van Steen. 2024
Additional Bibliography
  • B. A. Forouzan. Transmisión de datos y redes de comunicaciones. Cuarta edición. McGraw Hill.
  • F. García, J. Carretero, A. Calderón, J. Fernández, J. M. Pérez. Problemas resueltos de programación en C. Thomson.
  • Jesus Carretero Pérez, Félix García Carballeira, Fernando Pérez Costoya. Sistemas Operativos. Una Visión Aplicada: Tercera edición. . Amazon. 2021
  • L. H. Etzkorn. Introduction to Middleware: Web Services, Object Components, and Cloud Computing. CRC Press. 2017
Detailed subject contents or complementary information about assessment system of B.T.

The course syllabus may change due academic events or other reasons.