Course Details

Course Code COMP9243
Course Title Distributed Systems
Convener Ihor Kuz
Lectures Tue 15:00-17:00, online, weeks 1-10
Fri 16:00-18:00, online, weeks 1-10
Consults Mon 14:00-15:00, online
Units of Credit 6
Course Website
Handbook Entry


Due to COVID-19 restrictions this will be on online-only course. No face-to-face teaching or activities are required or provided. Please read the following regarding being on campus ( ) and illness (and the resources available to you in case you fall ill) during the COVID-19 pandemic ( ).

Course Summary

A distributed system is a computer system consisting of several independent computers, connected by a network, that can work together to perform a task or provide a service. Typical examples include: the World Wide Web, cloud computing, networked file systems, DNS, and massive multiprocessor supercomputers.

In this course we aim to provide students with a deeper understanding of distributed systems. In particular we focus on the principles, techniques, and practices relevant to the design and implementation of such systems. The course takes a systems-oriented view of distributed systems, concentrating on infrastructure software and providing hands-on experience implementing distributed systems.

Course Timetable

The course timetable is available here .

Course Aims

The course has the following objectives:

  • Present the principles underlying the functioning of distributed systems;
  • Create an awareness of the major technical challenges in distributed systems design and implementation;
  • Expose students to modern and classic technology used in distributed systems and their software;
  • Expose students to past and current research issues in the field of distributed systems;
  • Provide experience in the implementation of typical algorithms used in distributed systems.

Student Learning Outcomes

After completing this course you will be able to:

  • Explain what a distributed system is, why you would design a system as a distributed system, and what the desired properties of such systems are;
  • List the principles underlying the functioning of distributed systems, describe the problems and challenges associated with these principles, and evaluate the effectiveness and shortcomings of their solutions;
  • Recognise how the principles are applied in contemporary distributed systems, explain how they affect the software design, and be able to identify features and design decisions that may cause problems;
  • Design a distributed system that fulfils requirements with regards to key distributed systems properties (such as scalability, transparency, etc.), be able to recognise when this is not possible, and explain why;
  • Build distributed system software using both basic OS mechanisms as well as higher-level middleware and languages.

This course contributes to the development of the following graduate capabilities:

Graduate Capability Acquired in
scholarship: understanding of their discipline in its interdisciplinary context lectures, assignments
scholarship: capable of independent and collaborative enquiry lectures, assignments, exam
scholarship: able to apply their knowledge and skills to solving problems lectures, assignments, exams
scholarship: capable of effective communication assignments, exams
leadership: enterprising, innovative and creative assignments, exams
leadership: collaborative team workers assignments
professionalism: capable of independent, self-directed practice lectures, assignments

Assumed Knowledge

Before commencing this course, students should:

  • be highly competent in the use of a systems programming language—preferably C
  • be confident in the use of standard POSIX system libraries (including file handling, process management, signal handling, and socket programming).
  • be able to learn the concurrent programming language Erlang on their own (a brief introduction is given in the first lecture).

Furthermore since networks make up a key part of distributed systems, and since many of the key challenges and solutions presented in the course extend those found in operating systems, a solid background in both networking and operating systems is essential. The course builds on many of the topics covered in the prerequisites.

  1. COMP3231 or COMP9201 Operating Systems
  2. COMP3331 or COMP9331 Computer Networks and Applications

Teaching Strategies

  • Lectures: introduce concepts and principles, show examples of how these can be applied in practice
  • Assignments: allow students to experience the challenges of building distributed systems and to put into practice the principles learned in the lectures.
  • Guest lectures and case studies: provide concrete examples of how the principles and paradigms learned in class apply to the real world.

Teaching Rationale

The learning focus in this course is primarily on lectures and assignments. Relevant research publications and other material that goes deeper into the subjects handled during lectures are also provided, however, these are usually optional. We also endeavour to provide examples of how the material covered in the course is put into practice through guest lectures from industry practitioners.

While the assignments contribute a portion of the final mark, one of their primary aims is to provide an opportunity to put into practice some of the material presented in the lectures and to get a feel for the complexity of designing and programming distributed systems. To this end, we also provide unmarked exercises that encourage students to further explore the topics presented in the course.

Finally, the lecturer is also always available to engage in further discussion related to the course material.



There will be two programming assignments, which contribute in specified parts to the total assignment mark for this course. Tentative details are as follows:

# Release - Beginning of Due - End of Topic Marks
1 Week 2 Week 4 Distributed Shared Memory (group assignment) 40
2 Week 7 Week 8 Router Network (individual assignment) 40
3 Week 9 Week 10 Cloud Computing (group assignment) 20

Assignment submissions need to be coded in C, Erlang, Java, or Python (as determined by the assignment specification). Depending on the assignment, submission will be tested on the School's vina cluster running under Debian GNU/Linux, or on Amazon's AWS service.

The penalty for late submission of assignments will be 6% (of the worth of the assignment) subtracted from the raw mark per day of being late. In other words, earned marks will be lost. For example, assume an assignment worth 25 marks is marked as 20, but had been submitted two days late. The late penalty will be 3 marks ((0.06 * 25) * 2), resulting in a mark of 17 being awarded. No assignment will be accepted later than one week after the deadline.

Final Exam

A two hour open book written final examination will be conducted.

Supplementary exam

Supplementary exams will only be awarded in serious cases where the student has submitted a fully documented request for Special Consideration within 3 working days of the exam. In accordance with School policy, supplementary exams will not be awarded as a second chance for poorly performing students. In particular, it is unlikely that a supplementary will be awarded to students who have actually sat the proper exam. Make up your mind whether or not you are sick before attempting the exam! Moreover, a supplementary exam will only be awarded where a student's performance during the semester has been of satisfactory standard. Please refer to the sections under the heading Special Consideration - Illness & Misadventure and CSE Supplementary Assessment Policy on the Essential Advice page for further details.

Supplementary exams will be written .

Final Mark

The final mark will be the weighted average of the exam mark and the total assignment mark, where the exam mark accounts for 65% and the assignment mark accounts for 35% of the final mark . No-one will be allowed a passing grade unless their exam mark was at least 50% of the maximum possible exam mark.

Academic Honesty and Plagiarism

Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several on-line sources to help you understand what plagiarism is and how it is dealt with at UNSW:

Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using one. Note also that plagiarism includes paying or asking another person to do a piece of work for you and then submitting it as your own work.

UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.

If you haven't done so yet, please take the time to read the full text of

The pages below describe the policies and procedures in more detail:

Course Schedule

Lectures :

Due to COVID-19 restrictions this will be an online course. Lectures videos will be posted online one day prior to the published lecture time. Please watch the videos prior to the lecture time. An online Q&A will be held in Moodle's Blackboard Collaborate starting at the normal lecture time.

  • Tuesday 15:00-17:00; online - Blackboard Collaborate
  • Friday 16:00-18:00; Room: online - Blackboard Collaborate

The following is a provisional list of topics covered in the lectures (subject to change):

Week Date Lecture Topics Q&A Topics
1 15 Sep Introduction to Distributed Systems
Introduction to Distributed Systems
18 Sep Introduction to Erlang Introduction to Erlang
2 22 Sep System Architecture System Architecture, Assignment 1
25 Sep Communication Communication, Assignment 1
3 29 Sep Replication & Consistency
Replication and Consistency, Assignment 1
2 Oct Distributed Memory
Distributed Memory, Assignment 1
4 6 Oct Synchronisation & Coordination 1
Synchronisation & Coordination 1, Assignment 1
9 Oct Synchronisation & Coordination 2

5 13 Oct Fault Tolerance
Synchronisation & Coordination 2, Assignment 1
16 Oct
Fault Tolerance
6 20 Oct Flexibility week Revision
23 Oct Flexibility week Revision
7 27 Oct Security Assignment 2
30 Oct
Security, Assignment 2
8 3 Nov Naming, Distributed Filesystems Assignment 2
6 Nov Middleware Naming, Distributed Filesystems, Assignment 2
9 10 Nov Cloud Middleware, Assignment 3
13 Nov Blockchain Cloud, Blockchain, Assignment 3
10 17 Nov Distributed Systems in Practice Distributed Systems in Practice
20 Nov
Review (no recorded lecture, only Q&A)

Resources for Students


There is no single textbook for this course. Lecture material will be taken from a variety of sources, including recent research publications.

Reference Books

Books covering a significant part of the lecture material are the following (in order of preference and being most up-to-date):

  • Andrew S. Tanenbaum & Maarten van Steen: Distributed Systems: Principles and Paradigms, 3rd ed, 2017, approx $40, free PDF available on , hardcopy on Amazon.
    Up to date, recent edition. Good breadth of coverage, well organised. 2nd edition is also good.
  • George Coulouris, Jean Dollimore & Tim Kindberg: Distributed Systems: Concepts and Design, 5 th ed, 2011, Addison-Wesley, approx $130. Available at UNSW bookshop and library.
    Broad coverage, but too verbose in many places. 4 th edition is also good
  • Pradeep K. Sinha: Distributed Operating Systems, 1997, IEEE Press, approx $140. Available at UNSW library.
    Good coverage (breadth and depth). Getting a bit dated.
  • Doreen L. Galli: Distributed Operating Systems, 1999, Prentice Hall, approx $100. Available at UNSW library.
    Extensive examples, but rather shallow in its coverage, very little theory. Leaves out too much detail.
  • Mukesh Singhal & Niranjan G. Shivaratri: Advanced Concepts in Operating Systems, 1994, McGraw-Hill, approx $???.
    Somewhat dated, but that's not a problem as the book concentrates on the theoretical foundations. Case studies are out of date.

None of these books covers all the course material.

Other Material

Reference to research papers will be provided throughout, and it is recommended that you read them. Lecture notes and other information can be found under the course's WWW home page at URL . It is recommended that you refer to this page regularly.

Course Evaluation and Development

This course is evaluated each session using the CATEI system as well as a more detailed course-specific survey.

Student feedback is taken seriously, and continual improvements are made to the course based in part on this feedback. While no serious issues have been raised in the CATEI and other evaluations, we have made changes to assignments and assignment specifications based on student comments and updated lecture material to ensure that it is up-to-date as well as to improve sections that have been unclear to students in the past. We will also aim to provide more tutorial style questions during the course and review solutions with the class. Since this is a fast moving field, we have endeavoured to include more relevant material on current trends in distributed computing, in particular cloud computing and the design of large scale distributed systems and distributed databases. We also include (subject to availability of speakers) relevant guest lectures from industry practitioners to provide examples of how the material covered in class is used in practice.

Resource created Monday 07 September 2020, 09:31:39 PM, last modified Sunday 04 July 2021, 12:49:34 PM.

Back to top

COMP9243 20T3 (Distributed Systems) is powered by WebCMS3
CRICOS Provider No. 00098G