COMP30220 Distributed Systems

Academic Year 2022/2023

Distribution is a key technology for constructing systems that can scale to meet high demand (such as web applications) or which are required to operate over large geographical areas (such as Sensor Networks). Understanding how to do this effectively is an important challenge in computer science, especially given the continued emergence of systems that are required to handle millions of concurrent users (Facebook, Google, Linkedin, Amazon, Wallmart, Netflix,...) where fluctuations in demand require the addition or removal of hundreds of servers at any point in time.

This module explores this space from a practical perspective. Students will learn about and use a range of distribution techniques. They will explore the state-of-the-art and key theoretical issues by reviewing academic articles on some of the most successful solutions and presenting their findings to their peers. A final project will allow the students to apply these techniques through the development of a significant application.

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

The student should develop:

* An understanding of key principles of Distributed Systems Design
* The ability to specify and design a distributed system
* Core advanced programming skills in specific areas of Distributed Systems (e.g. Peer-2-peer, fault tolerant, or service oriented)
* An appreciation of the theoretical underpinnings.

Indicative Module Content:

While completing the course, the students will learn about a number distributed programming models, such as: socket programming, distributed objects, remote method invocation, web services (SOAP / REST), message-oriented middleware, and actor programming. Additionally, they will explore a range of distributed systems concepts, including: architectural styles (P2P, Client-Server, Monolithic Systems vs Microservices). Students will also be exposed to additional programming models, distributed applications (e.g. distributed file systems), and advanced concepts (replication systems, fault tolerance) through peer learning.

Student Effort Hours: 
Student Effort Type Hours
Lectures

24

Practical

24

Autonomous Student Learning

72

Total

120

Approaches to Teaching and Learning:
* Lab-based learning will be used to introduce the core programming concepts
* Theory and applications will be explored through a combination of critical writing (report), debate (reading groups), and group presentations.
* A group project will be used to apply the students skills to a more significant problem.
 
Requirements, Exclusions and Recommendations

Not applicable to this module.


Module Requisites and Incompatibles
Incompatibles:
COMP41720 - Distributed Systems


 
Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Group Project: Implement a Distributed System Throughout the Trimester n/a Graded No

40

Assignment: Review Academic Paper Week 6 n/a Graded No

20

Continuous Assessment: Weekly Practicals Throughout the Trimester n/a Graded No

40


Carry forward of passed components
No
 
Resit In Terminal Exam
Summer No
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Feedback individually to students, post-assessment

How will my Feedback be Delivered?

Not yet recorded.

Name Role
Kalyani Yogeswaranathan Tutor