CS-495 Distributed Systems
Winter 2004

[Communication | Announcements | Class Structure | Projects | Outline | Lectures]

Administrative Information


Fabián E. Bustamante
1890 Maple Ave, Room 334
+1 847 491-2745
Office Hours: TBD.


Stefan Birrer
1890 Maple Ave, Room 246
+1 847 491-7060
Office Hours: TBD.

Course Description

Distributed systems consists of a collection of independent computers that appears to its users as a single coherent system. While their early development followed the emergence of high-speed local area computer networks at the beginning of 1970s, the recent availability of powerful and cheap microprocessors and pervasive connectivity has brought the topic to everyone's attention.
In this course we will discuss some of the basic principles behind distributed systems and review some of the main paradigms used to organized them.

As it will be expected from our department, this is a learn-by-doing kind of course. A major component of this class will be a large project, done as a team, that will address some interesting distributed systems issues.

Location and Time

Tuesdays and Thursdays - 2:00-3:20.
Lectures will be held in 1890 Maple, Room 342.

In compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act, Northwestern University is committed to providing equal access to all programming. Students with disabilities seeking accommodations are encouraged to contact the office of Services for Students with Disabilities (SSD) at +1 847 467-5530 or ssd@northwestern.edu. SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.

Course Prerequisites

Communication Channels

There will be a number of communication channels set up for this class:






There will be only one, take-home, final exam for this course.

Reading Papers

We will start each new section with an introduction of the basic problems/ideas/solutions, followed by students presentations of at least two papers on seminal work and current research in the topic. To ensure lively discussions, you will be responsible for reading and preparing a short (typed) summary of those papers before each class.

Paper Summaries

When reading papers it is normally useful to write down a summary of about a page. Your summary should include at least:

  1. Paper title and its author(s).
  2. Brief one-line summary.
  3. A paragraph of the most important ideas: perhaps a combination of their motivations, observations, interesting parts of the design, or clever parts of their implementation.
  4. A paragraph of the largest flaws; maybe an experiment was poorly designed or the main idea had a narrow scope or applicability. Being able to assess weaknesses as well as strengths is an important skill for this course and beyond.
  5. A last paragraph where you state the relevance of the ideas today, potential future research suggested by the article, etc.

You may find the following brochure useful: Efficient reading of papers in Science and Technology by Michael J. Hanson, 1990, revised 2000 Dylan McNamee.

Class Structure

We have changed the organization of the class based on the experience collected during the first couple of weeks. In order to ensure enough time for our usual interesting discussions, from now on:

In-Class Presentations

Every presentation should include at least one slide for motivation, one for main ideas and contributions and one for open issues.

You must send me the slides for review at least 24hrs before your presentation.

I am putting together some notes on in-class presentations and useful web-pages on the general topic of technical presentations. This is still a work-in-progress!


Projects (done in groups of size 2+) are a critical component of this course. Your goal is to design, build and evaluate interesting systems that address issues, solve problems and exploit techniques from classroom discussions and readings.

Projects must be written up in a term paper and teams will present their results at the end of the course in a poster session or mini-conference.

This is a small list of potential ideas for projects (access restricted to inside Northwestern U.). Feel free to use one, propose something completelely different, or refine one of these into your own idea.

Project Deliverables and Deadlines

  1. Proposal - January 29: 2-3 pages describing the purpose of the project, work to be done and potential load distribution, expected outcome/results, ....
  2. Literature Survey - February 5: 2-3 pages (plus references) describing context and related work for the proposed project.
  3. Design Document - February 18: 4-5 pages with a detailed description of the software design, load distribution among group members. Construct a detailed sketch of your evaluation plan - what hypothesis is to be tested, how will you control the test circumstances, what workloads will you apply, why will this test enable resolution of the hypothesis, and what and how will specific metrics be measured.
  4. Final Report - March 18: The final report is a workshop-level paper describing your work, evaluation, related research, potential avenues to explore, etc. Code should be submitted electronically.

General Advice

Last modified: Fri Jul 17 08:21:44 CDT 2009