Distributed Systems Abstractions538B, Fall 2020, Ivan Beschastnikh (bestchai@cs.ubc.ca) Tue/Thu 8-930AM PST, Online, UBC course page Office hours by appointment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Course descriptionDistributed systems form the infrastructure for much of our daily computing experience. Popular internet services like Google search, Facebook, and Amazon are all implemented as distributed systems. Many of these systems have been repurposed to provide compute and storage as a cloud service to other companies, such as Airbnb. To bootstrap a tech startup today you simply pay for AWS or Azure to provide you with nearly unbounded and elastic capacity. Computer networks, from your home router to international ISPs, are also distributed systems: they are all in a constant state of distributed coordination. Even your multi-core laptop has much in common with a distributed system. Being infrastructure, distributed systems are rarely in the limelight. The purpose of this course is to highlight these systems and the beauty behind their designs. I posit that to know the 'stack' and to engineer robust and high-performing systems today (and even more so in the future) requires familiarity with distributed systems. This course will cover a broad range of topics. We will often look back to classic papers that introduced core concepts that structure many of the existing designs. We will also discuss contemporary papers that document the systems powering commercial services such as GMail. Unlike standard courses on distributed systems, this course will focus on abstractions. Dijkstra has a wonderful quote that gets to the heart of abstractions in computer science:
Powerful abstractions are a common theme in distributed systems (and really all software and hardware computing systems). This course will focus on a select number of abstractions that have persisted over time and continue to influence modern system designs. For example, some abstractions capture notions of coordination (consensus), others consider fault tolerance (replicated state machines) and consistency semantics (eventual consistency). These abstractions are worth studying because each one provides an accessible entry into the design of what are generally highly complex artifacts. Course-level learning goalsBy the end of this course participants will be able to
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Online formatThe course will be held entirely online in a synchronous/live format. That is, students and the instructor will meet each week at the same time online as if we were meeting for a physical class. This format is adopted due to the seminar-style nature of the course. The course is driven through in-class discussions of the readings and a live discussion is the best way to further our understanding as a group. The readings are available online and are linked to from the schedule below (a work in progress). Most of the readings are research papers; there is no textbook. The course will also include a course project (the bulk of your course mark).
If you are in the course, you should start with the following tasks:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Schedule (a work in progress)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Paper responsesFor each of the assigned readings in the schedule above you must compose a 1-2 paragraph response. (The schedule sometimes lists optional readings; you do not need to respond to these). You should post your response on Piazza at least 18 hours before class in the thread with the title/date for the paper. See paper responses instructions for more information. Everyone will have access to all the other students' response submissions. Please read them before class. Reading the other responses is a good way for you to gain perspective. You can see what you missed (or what other people missed), and whether you agree with their take on the key ideas. It will help to make the class sessions more productive. The response will be graded using the following scale:
Everyone must sign up to be an advocate/skeptic for a reading at least once during the term (likely 2-3 times depending on the final number of students in the class). If you are an advocate or a skeptic for the assigned reading, then you do not have to submit a response. See information about advocate and skeptic roles. The advocate/skeptic roles will be graded using the following scale:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ProjectThe project must address a non-trivial problem relevant to distributed systems. The project can resolve the problem by building a system, by collecting data/carrying out experiments, by developing algorithms and proving them correct, etc. I strongly prefer that you do your project in a team of 2-3 people, but this is not a strict requirement considering that you cannot collaborate in person. Here are some projects ideas (do not limit yourself to these!):
I especially encourage project proposals that span other areas of computer science. Schedule a time to chat with me if you have an idea, or if you have a topic but need to translate it into a project idea. The required project deliverables are listed below. In cases where the deliverable is a written paper, I would prefer that you share the doc with Ivan as an editable google doc. If you would rather use another submission approach, let me know. I would prefer final project reports in pdf format for an ACM SIG of your choice.
The project is structured as a series of regularly occurring deadlines, listed in the schedule above and below. Do not miss these! The deadline deliverable must be submitted by email to the instructor by 6PM on the day of the deadline. Timeline of project deliverables:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GradingFinal course mark will be based off of class participation, paper responses, and project deliverables.
Note that the team's mark for the proposal and final report is the same for all team members. For project presentations each team member will receive a team mark and an individual mark. The mark for class participation (10%) is based on three factors:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
How to do well in this courseBe prepared to participate in in-class discussion. This is a seminar-style course, which means that most of the class time will be devoted to discussion. The best way to prepare for class is to read the assigned paper(s), write a thoughtful response, and then read and carefully consider the responses submitted by your peers. Periodically re-read the readings from the first day of class and work to improve your paper reading and responding abilities. Plan your reading time. The readings will likely challenge you. I recommend allocating an explicit time slot each week for reading the papers and for thinking about the papers. Note that some readings will be more difficult than others. Jump ahead and note the readings that are particularly long, theoretical, or may be especially challenging to you. Invest time into the project. Put in consistent and weekly effort into the project. Rehearse and polish your presentation, and make sure your final report is well-written and conveys its ideas clearly.
Reach out for success and be proactive.
There are no explicit office hours for this course. Email and schedule
a time to chat with the instructor to discuss the course, the project,
etc. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Academic honesty and collaboration guidelinesThe department has a detailed policy regarding collaboration and plagiarism. You must familiarize yourself with this policy. Paper responses. Paper responses must be written individually. You are free to discuss the readings with other students, but write your responses on your own. Cite and attribute points from discussions with other students or external sources that you have read in your response. Projects. You are free to use any code you find in your project. However, a non-trivial fraction of functionality in your prototype must be constructed by your team. You must cite and attribute sources of the code that you borrow/utilize in your project. If you do discuss the project outside your team or use external resources (e.g., a StackOverflow question) then you must cite and attribute your sources in a README distributed with your project. Stating the source is insufficient: you should explain what was discussed/found and how you have used this information in your project. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Considerations in online participation from outside of CanadaDuring this pandemic, the shift to online learning has greatly altered teaching and studying at UBC, including changes to health and safety considerations. Keep in mind that some UBC courses might cover topics that are censored or considered illegal by non-Canadian governments. This may include, but is not limited to, human rights, representative government, defamation, obscenity, gender or sexuality, and historical or current geopolitical controversies. If you are a student living abroad, you will be subject to the laws of your local jurisdiction, and your local authorities might limit your access to course material or take punitive action against you. UBC is strongly committed to academic freedom, but has no control over foreign authorities (please visit this page for an articulation of the values of the University conveyed in the Senate Statement on Academic Freedom). Thus, we recognize that students will have legitimate reason to exercise caution in studying certain subjects. If you have concerns regarding your personal situation, consider postponing taking a course with manifest risks, until you are back on campus or reach out to your academic advisor to find substitute courses. For further information and support, please visit this page. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|