[Communication | Announcements | Projects | Topics | Schedule| Materials]
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.
Tuesdays and Thursdays - 2:00-3:20PM, place Ford SB-340.
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.
There will be a number of communication channels set up for this class:
Remember to check this regularly!
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 30'.
When reading papers it is normally useful to write down a summary of about a page. Your summary should include at least:
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).
Homework | Out | In | Solution |
1: From motivation to naming | 02/04 | 02/12 | |
2: From synchronization to security | 03/06 | 03/13 |
There will be a take-home, final given in the last week of class.
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, as follows: