|Module Name||Distributed Systems|
|ECTS Weighting||5 ECTS|
|Semester Taught||Semester 2|
|Module Coordinator/s||Professor Vinny Cahill|
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Describe the basic characteristics, structure and operation of a distributed system, and the issues that a distributed system poses for a system architect;
- Identify and evaluate appropriate architectural models and paradigms for building large-scale distributed systems;
- Design, construct, document and test distributed systems;
- Reason about the trade-offs between scalability, performance, consistency, reliability and availability in distributed systems;
- Make use of appropriate documentation and reference material.
Building distributed applications is still a difficult task due to the concurrency, communication latency, and possibility of partial failure that are inherent in computer networks. As in other areas of computer science, the trend in providing support for building distributed applications has been towards presenting application developers with high-level abstractions on which to base the design of their software.
This course takes a critical look at some of the architectural issues involved in, and paradigms available for, the construction of large-scale distributed systems such as the infrastructures supporting Google’s search engine or Amazon’s online sales platform. In particular, the course considers how to develop systems that must make trade-offs between performance, consistency, reliability, and availability.
Students will be given opportunities to develop their problem solving, programming and communication skills by designing solutions to distributed systems programming problems as well as implementing such solutions as distributed systems.
Specific topics addressed in this module may include:
- Distributed Algorithm Design;
- Mutual exclusion, leader election;
- Characterization of Failure and Failure Models;
- Atomic Transactions;
- Coordination, Consensus, Agreement;
- Distributed commit protocols;
- Replicated Data;
- Consistency models, replication protocols;
- Logging, checkpointing;
- Process Groups;
- Group Communication;
- Reliable and ordered multicast.
Teaching and Learning Methods
Lectures, tutorials/in-class team-based problem solving exercises, student-led lessons, team-based program development exercises.
|Assessment Component||Brief Description||Learning Outcomes Addressed||% of Total||Week Set||Week Due|
|Individual Distributed Application Design Exercise||Design of a large-scale distributed application.||All||60%||TBC||TBC|
|Team-based Lesson Preparation and Delivery||Delivery of a lesson on a seminal distributed system to the class.||L01, L02, L04, L05||10%||Staggered – |
4 Weeks per Team
|Team-based Programming Project||Development of a challenging distributed application.||All||30%||Week 2||Week 12|
In addition to satisfying the School’s requirement that students complete at least two-thirds of any continuous assessment exercises, students are required to contribute appropriately to all team-based exercises.
Individual distributed application design exercise, (100%).
Contact Hours and Indicative Student Workload
|Contact Hours (scheduled hours per student over full module), broken down by:||44 hours|
|Tutorial or seminar||11 hours|
|Independent Study (outside scheduled contact hours), broken down by:||76 hours|
|Preparation for classes and review of material (including preparation for examination, if applicable)||18 hours|
|Completion of assessments (including examination, if applicable)||58 hours|
|Total Hours||120 hours|
Recommended Reading List
- Designing Data-Intensive Applications by Martin Kleppmann, O’Reilly 2017.
- Distributed Systems – Third Edition by Maarten van Steen and Andrew S. Tanenbaum, Maarten van Steen 2017.
- Distributed Systems: Concepts and Design – Fifth Edition by George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Pearson 2012.
- Site Reliability Engineering: How Google Runs Production Systems edited by Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy, O’Reilly 2016.
- Extensive use will be made of papers from the literature.
Prerequisite modules: N/A
Other/alternative non-module prerequisites: Experience of building concurrent (multi-threaded) and networked applications