Distributed Systems

Description: Lecture, four hours; discussion, two hours; outside study, six hours. Enforced requisite: course 118. Covers fundamental concepts regarding design and implementation of distributed systems. Topics include synchronization (e.g., clock synchronization, logical clocks, vector clocks), failure recovery (e.g., snapshotting, primary-backup), consistency models (e.g., linearizability, eventual, causal), consensus protocols (e.g., Paxos, Raft), distributed transactions, and lock. Students gain hands-on, practical experience through multiple programming assignments that work through steps of creating fault-tolerant, sharded key/value store. Exploration of how these concepts have manifested in several real-world, large-scale distributed systems used by Internet companies like Google, Facebook, and Amazon. Letter grading.

Units: 4.0
1 of 1
Overall Rating 4.4
Easiness 2.9/ 5
Clarity 4.4/ 5
Workload 2.9/ 5
Helpfulness 4.1/ 5
Most Helpful Review
Spring 2020 - Professor Netravali is a really intelligent and engaging professor. His lecture slides are clear and his presentations were very effective and to the point, not wasting your time with unnecessary fluff. He is passionate about what he teaches, and it's a shame he won't be teaching this course again for a while (due to research he's doing). The projects do need to be refined, though. The later projects are very difficult and ambiguous in various ways, and the translation from what's on the lecture slides to the assignment implementation is a bit rough. Understanding the concepts in the lectures, like Paxos, don't translate to immediate knowledge of it in code, and I felt like the discussion sections were not very helpful in that regard. Plus, they are deceptively difficult. You will read at the bottom of the spec that full credit will be given if all test cases in the code are passed. Seems simple, right? Well, turns out it's a lot more complicated. Just understanding those test cases, how they work, and how to make your code work with them is a challenge in and of itself. But you also have to pass those test cases consistently; each test case is tested 5 times during grading, and you lose almost half credit for a test case if it doesn't pass once out of those five times. This can be a problem if you have a slight mutex locking error (like I did) that means you pass almost every time when you test it, but not when the TA tests it. It was an important learning experience for me, I think, but it was nonetheless far from ideal, and the project spec could have been a bit less ambiguous about how to search for errors like this. I don't know about other students, but I personally found the single exam for this course (midterm in week 8, no final) to be a bit stressful and difficult. Considering we didn't have any practice questions to work with beforehand, anticipating what would be on the exam was a bit hard, and the exam turned out to be much more difficult than I expected. Overall, Netravali is a great professor, and you'll learn a lot, but be prepared to work hard and deal with a somewhat frustrating learning curve. The midterm and last few projects are nothing to scoff at.
1 of 1

Adblock Detected

Bruinwalk is an entirely Daily Bruin-run service brought to you for free. We hate annoying ads just as much as you do, but they help keep our lights on. We promise to keep our ads as relevant for you as possible, so please consider disabling your ad-blocking software while using this site.

Thank you for supporting us!