Syllabus

Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

A schedule of topics and important due dates are presented in the calendar.

Structure

6.824 is a core graduate subject with lectures, labs, quizzes, and a final project. 6.824 is 12 units. 6 Engineering Design Points.

Lectures meet two times a week. Most class meetings will be one half lecture and one half paper discussion. You should read the paper before coming to class, and be prepared to discuss it. You can find out what paper to read for each meeting given in the readings section.

We will post a question about each paper 24 hours before we discuss the paper. Please bring your answer to class on a sheet of paper and hand it in. Your answer need only be long enough to demonstrate that you understand the paper; a paragraph or two will usually be enough. We won't hand back the questions, but we will glance at them to make sure your answer makes sense, and they will count for part of the paper discussion grade.

6.824 will have two in-class quizzes.

There are programming labs due every week or two for the first half of the term.

In the second half of the term you'll undertake a project in small teams. Each team will design and implement a system of its choice. Each team will also write a research paper about its project.

Grading

The grade for this class will be based on:

Activities Percentages
Labs (programming assignments) 25%
Project (programming and paper) 40%
Quizzes 25%
Paper discussion, participation, and paper questions 10%

Late Policy

The late policy for programming assignments is as follows. You can hand assignments in late, but the total amount of lateness summed over all the assignments must not exceed 72 hours. If you hand in an assignment late, and your total late time (include the late time for that assignment) exceeds 72 hours, we will give that assignment a grade of D. Note that a D is better than the grade you'd get if you handed in nothing. You can divide up your 72 hours among the assignments however you like; you don't have to ask or tell us. If you want an exception to this rule, please bring us a letter from a dean.

Collaboration Policy

You must write all the code you hand in for the programming assignments, except for code that we give you as part of the assignment. You are not allowed to look at anyone else's solution (and you're 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.

Useful Books

The following books may help provide background for 6.824 or help with lab programming. None of them are required. They are listed in rough order of usefulness.

Stevens, W. Richard, Bill Fenner, and Andrew M. Rudoff. UNIX Network Programming, Vol. 1: The Sockets Networking API. 3rd ed. Reading, MA: Addison-Wesley Professional, 2003. ISBN: 9780131411555.

Tanenbaum, Andrew. Modern Operating Systems. 2nd ed. Upper Saddle River, NJ: Prentice Hall, 2001. ISBN: 9780130313584.

Tanenbaum, Andrew, and Maarten van Steen. Distributed Systems: Principles and Paradigms. Upper Saddle River, NJ: Prentice Hall, 2002. ISBN: 9780130888938.

McKusick, Marshall Kirk, Keith Bostic, Michael J. Karels, and John S. Quarterman. The Design and Implementation of the 4.4 BSD Operating System. Reading, MA: Addison-Wesley Professional, 1996. ISBN: 9780201549799.

Stroustrup, Bjarne. The C++ Programming Language. 3rd ed. Reading, MA: Addison-Wesley Professional, 2000. ISBN: 9780201700732.

Stevens, W. Richard, and Stephen Rago. Advanced Programming in the UNIX Environment. 2nd ed. Reading, MA: Addison-Wesley Professional, 2005. ISBN: 9780201433074.

Calendar

LEC # TOPICS KEY DATES
1 Introduction and O/S review  
2 I/O concurrency and event-driven programming  
3 Event-driven programming (cont.) Lab 1 due
4 Network file system  
5 RPC transparency Lab 2 due
6 Crash recovery Team list due
7 Logging Lab 3 due
8 Cache consistency and locking Project proposal due
9 Memory consistency Lab 4 due
10 First project conferences  
11 Memory consistency (cont.)  
12 Vector timestamps and version vectors Lab 5 due
  Quiz 1  
13 Two-phase commit  
14 Paxos  
15 Viewstamped replication  
16 Harp First draft of report due
17 Second project conferences  
18 Frangipani  
19 Scalable lookup Second draft of report due
20 Wide-area storage  
  Quiz 2  
21 Hacking day (no class)  
22 Project demonstrations  
23 Content distribution  
24 Distributed computing Project reports due