CPSC 416

Distributed Systems

Course Description

Concepts and design of distributed systems. Communication architecture and models for interprocess communication. Process migration, naming, distributed file systems, fault tolerance, and concurrency control.

Average difficulty
4.5 / 5
Average quality
4 / 5
Scroll to see reviews

Add a Review for this course

Please ensure that your review is respectful and constructive. Read about UBC's aim for creating a safe and inclusive learning environment here. These reviews may take several days to process and will be scanned for inappropriate or malicious content.

Please enter a name/username.
Enter a valid url including the 'https://' prefix. (https://www.example.com)
Please enter your course review. [minimum length: 50 characters]
3
3

I took the course with Arpan Gujurati as the professor. He explained concepts pretty well in lecture, and was pretty approachable after class for questions. He was also active on Piazza.

In terms of course format & grading, we had 9 labs + 2 lab oral exams (38%), 2 quizzes (16% each), and a final exam (30%). The labs were due every 1-2 weeks on a very tight schedule, and were extremely challenging. They were based on the distributed systems MIT labs, so you can Google that if you’d like to take a look first.

This course was very heavy on readings as well, more than any other CPSC course I’ve taken. Each set of 1-3 lectures had an associated reading, and the lecture itself was like a case study on the topic of that reading.

Overall, this is one of the most difficult CPSC courses at UBC. The labs are very time consuming, and the course content is not trivial to understand, especially when you get to the later topics in the course. However, I think the grading was fair, and I do recommend this class since distributed systems are used virtually everywhere.

Difficulty:5
Quality:3.5
s, Apr 29 2024, course taken 2023W2
I like the course, which uses a project-based approach to let the students explore and learn the concepts we were taught in the lecture. I’d advocate more STEM courses like this course to have a final project or maybe case studies. The only downside is that the reading tasks are heavy.
Difficulty:4
Quality:4.5
michael, Dec 12 2023, course taken 2023W1
I think 416 is underrated. You get to build complicated backend systems from scratch with no instructions, just a list of requirements. There is a lot of effort that you need to put a lot more thought in planning out what the pieces are and how they’ll fit together, as opposed to a course like 415, where every step is already neatly outlined. I’d put 340 and 416 as my top 2 courses.
/u/MushCakes, May 23 2019
Best course at UBC CS imo. You end up building non-trivial new distributed systems from scratch (under Ivan). This is the resume padder class when it comes to projects imo. Plus, this course forces you to design software and systems properly.
/u/vaastav05, May 23 2019

Historical grade information

Grades information from UBC Grades Database