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.
Scroll to see reviewsI 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.
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.