Overview

This course will introduce students to the practice and theory of distributed systems. Students will study specific examples of distributed systems in detail, focusing on critical evaluation of structures and algorithms. Topics may include remote procedure call, distributed file systems, distributed operating systems, peer-to-peer computing, mobile computing, security, and algorithms.

An important theme throughout the course will be the semantic differences between centralized and distributed systems. Although many distributed systems attempt to emulate centralized systems, they generally fall short due to the underlying unreliability of their components. This theme will be formalized in the latter half of the course, which will focus on the more abstract algorithms and limitations that underly distributed systems.

The medium of the course will be the short academic paper. The short paper is the primary method of communicating new results in science and engineering, so students will gain experience in skimming and absorbing this sometimes difficult literary form. All of the course readings will be taken from a selection of "classic" papers on distributed systems. Students will be expected to engage in discussion of assigned readings in every class period.

In parallel with the readings, students will undertake a course project. Projects will be designed by the students with the advice of the instructor. Each project must be highly literate undertaking. A significant amount of time will be spent on developing and revising the ideas to be explored. The final paper will be a highly polished result within "striking distance" of submission to a conference. To encourage a process of continuous refinement, the course will include a series of milestones: an annotated bibliography, a formal proposal, an office conference, a progress report, a draft paper, peer reviews, a half-hour talk, and the final paper

Prerequisites