Department of Computer Science 

CS 6464: Spring 2009

Advanced Distributed Storage Systems

* Home
* Information
* Schedule
* Labs
* Project

[ Course Information | Course Overview | Course Structure | Grading Policy | Collaboration Policy | Writing a Review | Preparing Presentations | Prerequisites | Useful Books ]

Course Information

Class schedule: Tue/Thur 10:10-11:25am, 362 Hollister Hall (HLS).

Class instructor: Hakim Weatherspoon (Office hour: Tue/Thur 1:00-2:00pm, 4105C Upson Hall)

Class TA: Tudor Marian (Office hour: Mon/Wed 3:00-4:00pm, 5138 Upson Hall)

Class Admin: Bill Hogan (4120 Upson Hall)

Course Overview

This course broadly examines distributed storage systems in its many manifestations. It explores how to harness and maintain the collective storage capabilities in storage systems from global-scale enterprises and cloud computing to peer-to-peer, ad hoc, and home networks. It teaches abstractions, design and implementation techniques that allow students to build the kind of scalable high performance distributed systems that can deal with real-world workload. Students read recent research papers on server design, network programming, naming, various storage systems, security, and fault tolerance. The key is that students immerse themselves in state-of-the-art research, produce a term project, and often end with very interesting research results that can be published.

Course structure

This class is a graduate level course with lectures, individual labs and a final team project. Most class meetings consist of half lecture and half paper discussion. You should read the paper before coming to class, and be prepared to discuss it. We will post 1 or 2 questions about each paper to guide your reading. There will be 2-3 individual programming labs for the first half of the term. This sequence of labs will guide you in building a basic network file server. In the second half of the term you will undertake a project either individually or a small team of two. Each group will design and implement a system of its choice.

Grading Policy:

  • 40% class presentations, written reviews, and in-class participation.
    • 20% Class Presentations. This grade will be based on both the number and quality of presentations you give. Quantity is not a substitute for quality, but failing to do your fair-share of the presentations will impact your grade.
    • 10% Written reviews
    • 10% Participation in class discussion.
  • 50% lab assignments and independent project.
    • 15% Lab assignments.
    • 5% Initial project proposal.
    • 10% Midterm survey.
    • 20% Final project (written report and demo).
  • 10% Subjective factors, including regular in-class quizes based on required readings.

Collaboration Policy

You must write all the code you hand in for the programming lab assignments, except for code that we give you as part of the assigment. You are not allowed to look at anyone else's solution (and you are not allowed to look at solutions from previous years). You may discuss the assignments with other students, but you may not look at or use each other's code.

You may discuss the questions for each discussion paper with other students, but you may not look at other student's answers. You must write your answer yourself.

Writing Paper Reviews

Paper reviews should be short, concise, and most importantly, critical. They should include:

  • Short paragraph (3-4 sentences) summarizing the paper and discussing any of the following suggest points:
    • What do you feel the main contribution of this paper is?
    • What did you find interesting about this work?
    • What's the essential principle that the paper exploits?
  • Two or three major strength of the paper (typically one sentence for each point)
  • Two or three weakness of the paper (typically one sentence each point)
  • One question or future work direction you think should be followed (optional)

Additionally, we will usually post a question more than 48 hours before class. The question should be answered in the review as well.

In all, a review is typically 8 to 12 sentences over two to three paragraphs. With an additional couple of sentences if there is a question to answer.

Submit reviews via Course Management System (CMS) before class.

How to Prepare and Lead a Presentation

  • [Jan 29] Class participants should be prepared to select the first round of topics they will lead.
  • [At least 5 class meetings (=2 weeks + 1 meeting) before the scheduled date for your presentation] Meet with the instructor to agree on what ideas to focus on and what papers to cover.
  • [At least 3 class meetings (=1 week + 1 meeting) before the scheduled date for your presentation] Meet with the instructor to go over a draft of your presentation. Prior to that meeting, submit either a set of written (typeset) lecture notes if you are giving a "chalk talk" or a printed copy of slides if you are giving a powerpoint presentation.
  • [At least 2 class meetings before the scheduled date for your presentation] Meet with the instructor
    • for a final review / dry-run of your presentation, and
    • to decide the set of papers that constitute the assigned reading

Don't expect you'll be able to schedule the above meetings at the last minute. Schedules fill up, and the instructor is not infrequently away from Ithaca. Email the instructor a week or so in advance of when you'll want to have the above meetings.


1. Undergraduate Operating Systems
2. Programming experience in C/C++ is useful for the labs

Useful Books

The following books may help provide background help with lab programming. None of them are required. They are listed in rough order of usefulness.
  • UNIX Network Programming. Volume 1: Networking APIs: Sockets and XTI. W. Richard Stevens.
  • Modern Operating Systems. Andrew Tanenbaum. Prentice Hall.
  • Distributed Systems: Principles and Paradigms, Andrew Tanenbaum and Maarten van Steen, Prentice Hall.
  • The Design and Implementation of the 4.4 BSD Operating System. Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John S. Quarterman.
  • The C++ Programming Language. Bjarne Stroustrup. Addison Wesley.
  • Advanced Programming in the UNIX Environment. W. Richard Stevens.

Questions or comments? email

Policy on academic integrity