Most Helpful Review
This course is a *MUST* for anybody who is considering a career in handling systems of scale. The course gives a beautiful peek into the discipline of distributing computing across several machines which is a reality today for almost every service globally. It gives an understanding of the different protocols, mechanisms, principles that go into designing production systems. Many of the decisions that are taken in systems are based on trade-offs, resources at hand and there is no unique answer to all the problems which is where this course proves its might.
The assignments make the students very well prepared for real projects one would be doing. Assignments are very easy once you spend time on understanding the material clearly and analyzing different decisions that are taken and scenarios that can occur during execution. I personally found the slides, class and the examples really helpful in being able to visualize and understand different scenarios that occur in distributed systems. A proper reading will give completely clear way to solve every assignment in the class. While the complexity increases as the assignments progress, it's a matter of being able to understanding that anything can fail at any time.
Assignment 1 is very easy and gives an intro to go language which is to be done solo. Assignment 2-4 are to be done with a partner/solo and require understanding the protocols clearly from the class. I can see how they can get confusing if the material is not understood properly, but otherwise they should be pretty comfortably solved.
Professor Netravali is probably one of the best in terms of conveying the various principles that go into designing distributed systems. Rather than just saying that this is the protocol and this is how it works, he actually spends time on explaining why we need different protocols and what sort of situations demand what trade-offs. I personally found him to be very helpful in clarifying any doubts and explaining some concepts in more detail. TAs could have been better, but given the pandemic and online classes, I understand that it's hard to find good candidates specifically for a course like this which needs very clear understanding. Regardless, the professor did an awesome job in helping the students and accommodating things for us during this time.
Overall I think this design is very good in terms of understanding distributed systems and actually building them with the assignments. But be prepared to spend time understanding the concepts so everything will be smooth as butter!