Distributed Systems

ECE419, Winter 2026
University of Toronto
Instructor: Ashvin Goel

    Distributed Systems

Course overview

This course will present core topics in distributed systems, including programming and communication models in distributed systems, data consistency, data recovery, fault tolerance, replication and distributed transactions. The course will present abstractions and implementation methods for engineering distributed systems and discuss several cases studies of distributed systems.

The course will have regular lectures, assigned paper readings, a mid-term exam and a final exam. Students will get hands-on experience with most topics through programming assignments.

For course prerequistes and credits, please check the course description in the academic calendar.

Learning outcomes

The learning outcomes of the course are:

Course material

The course material will primarily be lecture slides and relevant research papers. All this material will be available in the lectures page. Please visit this page regularly for updates.

The following (optional) books and reading material are suggested for this course:

All course announcements and course discussion will be on the Piazza website. Please post any questions about the course on Piazza. Please send a private message to the instructors or TAs on Piazza to communicate with them.

Course grades will be made available on the Quercus website.

The instructor will not be recording lectures.

For some more details about the course and related courses, read the Course FAQ.

Lab assignments

There will be a set of programming assignments in the course. The assignments will require programming in the Go language. All the assignments are to be done individually. Please visit the labs page for all lab-related information.

Course meetings

The course meeting times are shown below. The lab sessions provide one-on-one help with TAs regarding questions about the programming assignments (attendence is not mandatory). There will be one mid-term exam in the course. There are no tutorials in this course. The final exam schedule will be announced once it is available.

Lecture 1: Tue 6-7pm (BA1180) Thur 3-5pm (SF3202)
Labs: Tue 9-12pm (GB243) Wed 9-12pm (GB243) Thu 9-12pm (GB243)
Mid-term exam: Mar 2, Mon 7-8:30pm (EX320)
Final exam: Between Apr 9-30
Office hour: Tue 2-3pm (SF2001B)

Grading

The composition of the final mark is as follows:

The mid-term and the final exam will be held in person. Both exams will have exam paper "Type A" (closed book, no aids/cheat sheets permitted) and calculator "Type 4" (no calculator is allowed).

Students will have three days to contest any grade after the grade is made available. Please submit a short explanation justifying the reasons for regrading.

Course topics

The list of the topics is shown below. Please keep in mind that this list of topics is tentative and is intended to serve as a general guide.

Weeks Topic
1 Introduction
2, 3 Programming distributed systems
4 Consistency in distributed systems
5, 6, 7 Replicated storage systems
8, 9 Scalable storage systems
10, 11 Transactional storage systems
12 Byzantine failures

Policies and statements

Independent work policy

Students are encouraged to discuss with one another issues and problems that arise in the course of solving the programming assignments. However, plagiarism and cheating will not be tolerated under any circumstances. Cheating includes, but is not limited to, looking at prior solutions or other student's code, copying code from the web, sharing code on Piazza, and generating expected output in an attempt to fool automated marking scripts. It is also an offense to allow others to copy and submit your work for credit, whether with or without your knowledge. So, it is your responsibility to protect your work from being copied by others. If you make your code publicly available, even after the term ends, it will be treated as an academic offense.

Repositories such as github.com are public by default, so please don't put your code there unless you make the repository private.

All submitted code will be checked for potential plagiarism.

A reasonable rule of thumb to follow during a discussion is that nobody should leave the discussion with written notes of your discussion. It is unlikely that two individuals that have discussed various approaches to a problem will write highly similar programs unless one or both have a written record of what was said.

For more details, please refer to the Academic Integrity web site at the university.

Use of artificial intelligence tools

Students may use artificial intelligence tools, including generative AI, in this course as learning aids.

However, students may not use artificial intelligence tools for their lab code or during the exams. The knowing use of artificial intelligence tools, including ChatGPT and other AI and writing coding assistants, for the completion of, or to support the completion of, an examination, lab assignment, or any other form of academic assessment, may be considered an academic offense in this course. We suggest turning off any code completion features in IDEs while writing your lab code.

University land acknowledgment

I wish to acknowledge this land on which the University of Toronto operates. For thousands of years, it has been the traditional land of the Huron-Wendat, the Seneca, and the Mississaugas of the Credit. Today, this meeting place is still the home to many Indigenous people from across Turtle Island and we are grateful to have the opportunity to work on this land.

Learn more about Canada's relationship with Indigenous Peoples.

Wellness and mental health support

Your personal wellness and mental health are important. The University of Toronto and the Faculty of Applied Science & Engineering offer a wide range of free and confidential services that can support your well-being.

As a U of T Engineering student, you have a Departmental Undergraduate Advisor who can support you by advising on personal matters that impact your academics. Other resources that you may find helpful are listed on the U of T Engineering Mental Health & Wellness webpage.

Accommodations

If you have a learning need requiring an accommodation, the University of Toronto recommends that students register with Accessibility Services as soon as possible.

Term-work petitions

During the course you may encounter circumstances beyond your control, such as illness or a personal/family crisis. These circumstances may force you to delay or miss course work, such as the lab assignments or exams. In such cases, you may submit a term-work petition through the Engineering portal. Please make sure to indicate whether you need a deadline extension or you will miss the course work. Accommodations will be provided as follows:

If you have questions or concerns regarding these policies, please contact the instructor.