This course will study the key design principles and implementation challenges of distributed systems, which are collections of independent, networked machines functioning as single systems. Well-known examples of such systems include email, network file servers, the Internet, and compute clusters. Topics include networking and communication protocols, naming, synchronization, consistency and replication, fault tolerance, and security. We will also discuss case studies of real-world systems through programming-intensive projects and discussions of influential research papers covering a variety of distributed systems.
Primary course goals include:
CSCI 2330 (Foundations of Computer Systems) is required. CSCI 2200 (Algorithms) is recommended but not required. Prior experience with computer networks is not required or assumed.
Instructor: Sean Barker
Office: Searles 220
Office Hours: Tuesdays and Thursdays 2-3:30, Fridays 1-2, or by appointment.
Attendance and participation in class, completion of written homeworks and programming-intensive programming projects (including written writeups), a midterm exam, and a final project. Evaluation will be as follows:
Programming projects will be completed in groups of 2 and will involve a substantial time commitment on your part, and it is critical that you start working early!
You will have 3 flex days to submit projects late without penalty during the semester, which may be allocated however you wish. Beyond the use of your flex days, late assignments will be penalized a letter grade per day.
We will use Piazza to facilitate discussion outside of class. In general, you should prefer posting to Piazza over sending me email, as it will allow your classmates to both see and answer your questions, possibly quicker than I alone can (though you can also post privately such that only I can see your question).
Here is the CSCI 3325 Piazza page.
We will make limited use of the following (free!) textbook:
Maarten van Steen and Andrew S. Tanenbaum. Distributed Systems, 3rd edition (2017). Available as a free PDF download.
If you would like a printed copy, you can inexpensively acquire one via Amazon.
Tuesdays and Thursdays
11:40 AM - 1:05 PM
Use of laptops in-class is permitted for note-taking or other class-related purposes. Cell phones should be silenced and put away during class to avoid disruptions.
No electronic devices, including computers, phones, or calculators, are permitted during exams unless specifically indicated by the instructor.
Please review the Computer Science Collaboration Policy. You are responsible for reading, understanding, and adhering to this policy.
Note for version control system users (e.g., git): While you are welcome to use version control systems such as Git or Subversion to collaborate within your team (or to store your own code), you may not store or post any code in publicly-available repositories (such as public repositories on GitHub). If you would like to use a service like GitHub, you must use a private repository.