This course covers fundamental topics in design and implementation of software for distributed systems. The prerequisites are undergraduate courses on operating systems (CSE 306 or equivalent) and networks (CSE 310 or equivalent), which cover low-level communication and network protocols. This course is mainly about middleware and application-level software in distributed systems.
We will cover the following topics:
The primary textbook is: George Coulouris, Jean Dollimore, and Tim Kindberg. Distributed Systems: Concepts and Design, 4th edition. Addison-Wesley, 2005. You can use the 3rd edition for most topics; you should consult the table in the preface of the 4th edition that lists the sections that were significantly changed or added in the 4th edition, and you should refer to the 4th edition for those sections. In summary, it is probably sufficient if you refer to chapter 10 and (if we have time to cover it) chapter 19 in the 4th edition.
The coursework includes a project, homeworks (problem sets), a midterm exam, and a final exam. The project is to implement chain replication, described in
Robbert van Renesse and Fred B. Schneider. Chain Replication for Supporting High Throughput and Availability. In Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDI '04), pages 91--104. © USENIX Association, 2004.The project may be implemented in any programming language available on the Computer Science Department's computers. In case you use Java, extensive documentation of its networking APIs is available in the JDK 5 Documentation (e.g., click on "Networking" under "Other Packages", or click on "Java 2 Platform API Specification" and then on package "java.net") and in books such as: Elliotte Rusty Harold. Java Network Programming, 3rd edition. O'Reilly, 2004.
Meeting Time and Place:
Tuesday and Thursday, 12:50pm-2:10pm. Physics P112.
Office Hours: Mon and Wed, 10am-11am, and by appointment and chance.
Teaching Assistant: Seung-Joon (Sonny) Park
Assignments are posted in Blackboard. The Discussion Forum contains announcements and discussion. Read it regularly, and post your questions (and answers to other people's questions) there.
I occasionally use Blackboard's email feature to send urgent announcements, so please set your preferred email address in Blackboard.
Exams. During exams, you may use the course textbook (current or previous edition), your own notes, handouts that were distributed in class or posted on the course web sites, and a dictionary. You may not bring someone else's notes or a mechanical reproduction of all or part thereof. You may not bring a different textbook or a mechanical reproduction of all or part thereof.
Grading. Each assignment is graded relative to some maximum number of points (e.g., 20). The maximum number of points is unrelated to the weight of the assignment in the course grade. Each score is normalized into a number between zero and one (e.g., 19/20 -> 0.95) and then multiplied by the weight of the assignment to obtain a weighted score. Course grades are based primarily on the sum of the weighted scores.
Grading of Teamwork. Each project assignment will receive a score reflecting the quality of the work. At the end of the semester, each team member's score for that assignment will be computed by multiplying that score by an individual contribution factor (ICF) that reflects the team member's overall contribution to the team effort for the entire semester. Ideally, every team member will contribute equally to the overall effort. In that case, every team member's ICF is 1, and every team member receives the same scores for all projects. If some team member's overall contribution was, for example, only 90% of his or her fair share, then that team member's score for each project will be computed by multiplying the original score for the project by that team member's ICF of 0.9. A team member who contributes more than his or her fair share will have an ICF larger than 1. We will evaluate each team member's contribution using all available information, including the summary of contributions in the README of each project assignment.
Slip Days. Each student has 3 slip days that can be used with any assignments. The late submission penalty does not accumulate during slip days. If you want to use one or more slip days for an assignment, you must clearly indicate this at the time you submit the assignment. Slip days must be used in integer amounts. Using a slip day for a project submission consumes a slip day of each team member.
Integrity. All students are expected to follow CEAS's policies governing academic dishonesty. If you submit anything that includes any material created by other people, your submission must clearly indicate the sources of all such material. Failure to indicate the sources will be treated as plagiarism. Discussing assignments with other people is fine. However, each person must write his or her own submission independently. Showing your own work to other students, giving it to them, or making it accessible to them (e.g., by making the files world-readable, intentionally or through carelessness) will be treated as academic dishonesty.
Disabilities. If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Center for Disability Support Services (DSS) in the ECC Bldg, 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.
Assignments that do not involve programming should be submitted on paper in class on the due date, unless the assignment specifies otherwise. Assignments submitted after the end of class on the due date are late and receive a -3% penalty. Assignments submitted the next day receive a -6% penalty, and so on.
Submission instructions for assignments that involve programming will be included in the assignment.
The following information may be slightly inaccurate, due to late submissions and re-grades.