EECS-345 Distributed Systems
Fabián E. Bustamante
2145 Sheridan Road, Room 345
+1 847 491-2745
Office Hours: TBD
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.
this course we will discuss some of the basic principles behind
distributed systems and review some of the main paradigms used to
Location and Time
Tuesdays and Thursdays - 2:00-3:20PM, place Ford SB-340.
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 email@example.com. SSD
is located in the basement of Scott Hall. Additionally, I am
available to discuss disability-related needs during office hours
or by appointment.
There will be a number of communication channels set up for
- We will use the course web site (http://www.aqualab.cs.northwestern.edu/classes/eecs-345-w08)
to post announcements related to the course. You should check
this regularly for schedule changes, clarifications and
corrections to assignments, and other course-related
- There will be a newsgroup (cs.345 at
news.cs.northwestern.edu) to foster communication outside the
- There will be an email alias ( eecs-345-ta@cs)
for the staff that you should use for questions that would be
inappropriate to post on the newsgroup/discussion-board.
Remember to check this regularly!
- The project handout is posted!
- Homework 2 is posted; it goes from synchronization to
security (only 4 questions).
- Homework 1 is finally posted; it covers from Introduction to
- Please note the update on the homework dates to account for
changes in the schedule.
- On Thu. 1/24 Dave will give a brief intro on how to use PlanetLab.
- Note the changes to the schedule to make up for the lost class.
- Today (Thu. Jan. 10th) we'll be meeting in Ford SB360. Note
that we will cover the first topic and paper (Grapevine).
The course is organized as a series of lectures, homework
assignments, a single term-long project and a take-home
exam. During lectures, we will cover introductory material during
the first 50' and discuss a related seminal paper during the last
- Lectures - A set of lectures on the core of the material.
- Readings - Textbook and paper reading in preparation for
(not subsitution of) the lecture.
- Project - A major project that addresses issues, solve
problems and exploit techniques from classroom discussions and
- Homework - A set of homework assignments aimed at
reinforcing the material covered in the reading and the
- Exam - A take-home, final given in the last week of class.
When reading papers it is normally useful to write down a
summary of about a page. Your summary should include at least:
- Paper title and its author(s).
- Brief one-line summary.
- A paragraph of the most important ideas: perhaps a
combination of their motivations, observations,
interesting parts of the design, or clever parts of their
- 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.
- 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.
There will be one single project on which you will work
throughout the quarter. As part of this project you will develop
a simple monitoring service for distributed systems including a
visualization tool for it. Scalable system monitoring is a
fundamental abstraction for large-scale distributed systems. It
serves as basic building block for a variety of applications --
from financial services to online gaming. You will do your work in
PlanetLab (www.planet-lab.org), a
global-scale testbed for distributed systems experimentation
consisting of over 800 nodes.
There will be two kinds of homework assignments given
throughout the class: paper reading assignments and textbook-style
questions. You should have finished reading the assigned paper
before coming to lecture. In addition, there will be a set of
written homework assignments inteded to ensure that you keep up
with the reading. Each assignment will consist of about 3 short
questions, to be done alone and turned in by midnight on the due
date (see course policies below).
|1: From motivation to naming
|2: From synchronization to security
There will be a take-home, final given in the last week of
I use a criterion-referenced method to assign your grade; in
other words, your grade will be based on how well you do relative
to predetermined performance levels, instead of in comparison with
the rest of the class. Thus, if a test has 100 possible points,
anyone with a score of 90 or greater will get an A, those with
scores of 80 or greater will get a B, those with scores of 70 or
greater will get a C, and so on. Notice that this means that if
everyone works hard and gets >90, everyone gets an A.
Total scores (between 0 and 100) will be determined, roughly,
- Homework and reading assignments 20%
- Class participation 10%
- Project 45%
- Exam 25%
- Introduction: Defining distributed systems and their
goals, hardware and software concepts, the client-server model
and architecture, modern architectures for distributed
- Wide-area dsitributed systems and PlanetLab: Issues
with wide-area distributed systems and brief introduction to
- Communication: Basics of communication, remote
procedure calls, remote object invocation, message-oriented and
- Processes: Clients, servers, code migration and
- Naming: Naming and locating entities, removing
- Synchronization: Synchronization in distributed
systems, logical time, global state, elections and mutual
- Consistency and replication: Data replication,
scalability, and consistency
- Fault tolerance: Making distributed systems fault
tolerant, reliable and resilient multicasting.
- Security: Secure communication and authorization in
- Review of major distributed systems paradigms:
Distributed object systems (Corba, Globe, ...), Distributed file
systems (Plan 9, XFS, SFS, ...), Distributed document-based
systems, and Distributed coordination-based systems.
Last modified: Mon Dec 7 13:26:41 CST 2009