Distributed Systems

General

Educational goals

The objective of this course is to understand the basic problems that exist in a distributed computing system and the mechanisms used to solve them.

  • Students will be able to process and solve problems in different modules of the distributed systems course such as real-time clock synchronisation using different algorithms, assigning logical timestamps, vector timestamps and causal Lamport timestamps, the execution of mutual exclusion distributed algorithms, and the execution control of distributed transactions (locking and pessimistic ordering algorithms).
  • Students will be able to describe and design a distributed system, identify any synchronisation problems, and implement solving algorithms.
  • Students will be able to design performance optimisation solutions for distributed systems.
  • By the end of this course, students will have the ability to analyse, design and evaluate complex distributed systems supported by fundamental algorithms and middleware mechanisms, and implement distributed systems applications using distributed infrastructures and distributed systems middleware, such as Remote Procedure Call (RPC) and Remote Method Invocation (RMI). Other covered topics will include object-oriented distributed development environments, the network mechanism of socket programming, the Message Passing Interface (MPI) programming model, and modern development environments like Hadoop and Spark.

Course Contents

Indicative topics covered: communication protocols, reliable data transfer, request-reply, remote procedure call, remote objects, mobile code, messaging, multicasting, publish-subscribe communication, group communication with message delivery in FIFO, causal and total order, distributed directory and file systems, physical and logical clocks, consistent monitoring, consistent global states, algorithms for mutual exclusion, elections, algorithms for deadlock detection, termination, fault tolerance with restarts/rollbacks and replication, distributed consensus/agreement. The course includes assignments in C/Java/python for the development of distributed mechanisms and applications.

Teaching Methods - Evaluation

Teaching Method
  • Lectures in the classroom.
Use of ICT means
  • A website is maintained for the course, which contains the educational material as well as exercises for student practice. In addition to face-to-face communication, students will be able to communicate via email as well as through the course website.
Teaching Organization
Activity Semester workload
Lectures52
Writing and presenting compulsory work68
Individual study and analysis of literature60
Total 180
Students evaluation

Recommended Bibliography

Recommended Bibliography through "Eudoxus"
  1. Κατανεμημένα Συστήματα: Αρχές και Υποδείγματα, A. Tanenbaum & M. van Steen, Κλειδάριθμος, ελληνική μετάφραση, 2005, ISBN: 960-209-924-0, Κωδικός Βιβλίου στον Εύδοξο: 13777
  2. Κατανεμημένα Συστήματα, Ι. Κάβουρας, Ι. Μήλης, Γ. Ξυλωμένος, Α. Ρουκουνάκη, 3η έκδοση, Κλειδάριθμος, 2011, ISBN: 978-960-461-463-9, Κωδικός Βιβλίου στον Εύδοξο: 12533080
  3. Δικτυακός Προγραμματισμός - Ανάπτυξη Εφαρμογών Πελάτη-Εξυπηρετητή στην Οικογένεια Πρωτοκόλλων TCP/IP, D. Comer, D. Stevens, ελληνική μετάφραση, Ιων, 2005, ISBN: 978-960-411-537-2, Κωδικός Βιβλίου στον Εύδοξο: 14504
Complementary international bibliography
  1. Distributed Systems: Concepts and Design, G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, 5th ed., Addison Wesley, 2011.
  2. Distributed Systems: Principles and Paradigms, A. Tanenbaum, M. van Steen, 2nd ed., Prentice Hall, 2006.
  3. Distributed Algorithms, N. Lynch, Morgan Kaufman, 1996.
  4. Distributed Algorithms for Message-passing systems, M. Raynal, Springer-Verlag, 2013.