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 |