Remember to check this regularly!
Fabián E. Bustamante
Distributed systems are collections of networked computers that
coordinate their actions through message exchanges. 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.
Mondays and Wednesdays - 3:30-4:50PM, Tech M128.
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 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 this class:
The course is organized as a series of lecture and paper discussions, a small project, a term research proposal and a take home exam.
We will be reading one paper per meeting; you should have read the assigned paper before coming to lecture. The paper will be first presented to the group by a student and then discussed in a round-table manner. A student assigned to play devil's advocate will help jumpstart the conversation. To ensure lively discussions, you will be responsible for reading and preparing a short (typed) summary of the assigned paper before each class. Summaries will be due by 11:59PM of the previous day so that the staff has time to read them and bring your comments into next class' discussion.
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.
This year we will follow a different model for the project component of the course. During the first half of the quarter you will work, in teams of two, on a small, focused project (e.g. setup and test your own DNS server). The project will help make some of our classrooms discussions a bit more concrete and allow you to gain some practical experience.
For this year project you are asked to develop a functional HTTP/1.0 server. The project will teach you the basics of distributed programming, client/server structures, and some of the many issues in building high performance servers. Each group will be evaluated on the basis of a demo to me. Please see the announcement section of the course web page for instructions on how to sign up for your demos.
Here is the handout for the project: A Simple Web Server - Due date: Feb. 10.
During the second half of the quarter, equipped with a better understanding of the interesting, open questions in the field, you will put together a research proposal (following John Wilkes' CSP guideline). The proposal document will be your only deliverable for this part; what you do with the proposal after the quarter is over is up to you. You could see it as a simply exercise on proposal writing or try pursue it through a EECS 395/495.
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: