Software Engineering (3 Years) [BSc]
Fundamentals of Distributed Systems
|Unit level:||Level 1|
|Teaching period(s):||Semester 2|
|Offered by||School of Computer Science|
|Available as a free choice unit?:||N
Additional RequirementsStudents who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.
This course unit aims to provide students with a basic understanding of distributed computing, drawing on their general experience as users of distributed applications to inform the discovery, description and classification of fundamental concepts in distributed systems.
This course unit builds on the knowledge gained by students in COMP10120: The First Year Team Project course unit and aims to equip them better to benefit from more technically-demanding course units in second and third years (in particular, the course units on Computer Networks, Distributed Computing and Mobile Systems).
After a brief introduction that contrasts the distributed view of computing with the centralized one presented in other course units, the course unit progresses by studying a few exemplar distributed applications, one by one. Each exemplar application is chosen with a view to illustrating issues and challenges arising in distributed systems.
After each dissection of an exemplar application, time is taken to make explicit, in a more systematic way, some of the basic principles involved, how tools and techniques have been developed that enforce those principles, and how these tools and techniques both give rise and presuppose the distributed computing infrastructures that pervademodern computing.
OverviewIn our day-to-day life we make use of devices such as smartphones, tablets, computers, cash machines (the list goes on!) that form huge distributed systems. These are the most advanced systems in computer science. We explore the many technical challenges involved in making them work. We learn about dining philosophers! We learn what needs to happen if we are to avoid deadlocks! We learn how the likes of Google can process so much in so short a time. We learn how the web really really works and why it works so well as it does. Well... most of the time!
Learning outcomes are detailed on the COMP18112 course unit syllabus page on the School of Computer Science's website for current students.
- Analytical skills
- Problem solving
- Written exam - 75%
- Practical skills assessment - 25%
- Introduction to Distributed Systems 
- Overview of the Course Unit
- Motivation, Definition and Challenges of Distributed Systems
- Axioms/Fallacies of Distributed Computing 
- Transparency Goals of Distributed Systems 
- Case Study (1): Internet, Web and Email 
- System Software: An Historical Overview 
- Centralized to Threaded to Parallel to Distributed Systems 
- Interconnects and Protocol Stacks 
- Architectural Paradigms for Distributed Systems 
- Inter-process Communication
- Synchronization/Blocking Primitives 
- Socket-Level Client/Server Systems
- Examples of Distributed Algorithms 
- Case Study (2): File Sharing 
- Case Study (3): Multi-User Gaming 
- Massive Distribution for Performance 
- Services over the Web 
- A Web of Data 
COMP18112 reading list can be found on the School of Computer Science website for current students.
Feedback methodsExamples classes, lab sessions.
- Assessment written exam - 2 hours
- Lectures - 24 hours
- Practical classes & workshops - 16 hours
- Independent study hours - 58 hours