CSCI 3325
Distributed Systems

Bowdoin College
Spring 2019
Instructor: Sean Barker

Course Overview

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
Phone: 207-798-4220
Office Hours: Tuesdays and Thursdays 2-3:30, Fridays 1-2, or by appointment.

Course Requirements

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.

Discussion Forum

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.

Class Information

Tuesdays and Thursdays
11:40 AM - 1:05 PM
Searles 126


Electronic Device Policy

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.

Collaboration Policy and Honor Code

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.