Distributed Computing Systems

CS 4513
D-Term 2010

This is a 4000-level undergraduate course during which you will study the concepts, design, and implementation of distributed computing systems. The course will:

  1. Continue the study of computer operating systems begun in CS-3013, specifically the study of file systems.
  2. Introduce the concepts of distributed computing and learn about protocols needed for their implementation.
  3. Reinforce the concepts of concurrency in computing environments.

The course includes a substantial practical component during which students will write programs that exercise distributed computing features.


Note: The main portion of this course web-site is password protected, including the Lecture Notes and Programming Projects. To access it, use the user ID and password given in class.


The official course description on the WPI Computer Science web site says that this course “extends the study of the design and implementation of operating systems begun in CS 3013 to distributed and advanced computer systems. Topics include principles and theories of resource allocation, file systems, protection schemes, and performance evaluation as they relate to distributed and advanced computer systems.”

You must have a solid background CS-3013 and/or an equivalent Operating Systems course, and you must also be proficient in programming a low-level language such as C, including the use of pointers, casts, malloc(), and free().

You will need to know something about computer networks, protocols, and the 7-layer OSI stack. This is covered in CS-3516, Computer Networks. For those have not taken CS-3516 (or its predecessor, CS-4514), a brief tutorial will be offered at a time and place to be arranged in the first class. The following slides include the material of the tutorial. (.ppt, html). A tutorial on the use of sockets can be found here:–



Course Information

Time and Place: Mondays and Thursdays, 8:00 — 9:50 AM, Fuller Labs 320
March 15 — May 4, 2010
No class on Monday, April 19 (Patriots’ Day holiday)
No class on
Thursday, April 22 (campus-wide Project Presentation day)
There will be a class on
Tuesday, April 20 (Thursday scheduled observed)

Professor: Hugh C. Lauer

Email: <professor’s last name>@cs.wpi.edu

Office hours: by appointment, or see chart below

Office: Fuller Labs, room 144


Teaching Assistants:

Thangam Vedagiri Seenivasan,

Email: thangam **at** cs.wpi.edu

Office hours: See chart below

Office: Fuller Labs 317

Wei Zhang

Email: weizhang **at** cs.wpi.edu

Office hours: See chart below

Office: Fuller Labs 317


Textbooks:     George Coulouris, Jean Dollimore, and Time Kindberg, Distributed Systems: Concepts and Design, 4th edition, Prentice Hall, 2007.

You also need one of the following from your Operating System course:–

o       Andrew S. Tanenbaum, Modern Operating Systems, 3rd edition, Prentice Hall, 2008.

o       Silberschatz, Galvin, and Gagne, Operating Systems Concepts, John Wiley and Sons, 7th edition 2005 or 8th edition 2009.


Class e-mail lists: The following two lists are in the domain cs.wpi.edu:–

o       cs4513-all  — to reach all students, TAs, and the professor

o       cs4513-staff — to reach just the professor and the TAs

Course web site: http://web.cs.wpi.edu/~cs4513/d10/

Students needing to be absent from class should notify the professor by e-mail or in person as soon as possible, especially if an exam is scheduled for the day of absence!


Office Hours and Schedule















Wie Zhang



























Wei Zhang














General Overview

CS-4513 meets for two 2-hour classes per week for a seven-week undergraduate term (28 hours). There will be no class on April 19 (Patriots’ Day) and April 22, the campus-wide Project Day. However, there will be a class on Tuesday, April 20, during which WPI observes the Thursday schedule.

This course will be a combination of lecture and class discussion, programming projects, and quizzes and tests. There may be one or more unannounced quizzes during the term, and there will be a scheduled mid-term exam and a scheduled final exam.

There will two programming projects during the term, a simple project to be done individually and a larger to be done in teams.

Class participation is an essential part of the grade for the course. If you attend lectures but never say anything or engage in discussions, it would likely reduce your grade by one full letter or more. Students will be expected to be familiar with and to discuss the relevant sections of the textbook and with other reading assigned during the term.


Grading Policy

Final grades will be computed as follows:

  • Exams: approx. 40%
  • Programming Projects: approx. 40%
  • Class participation, written homework, and quizzes: approx. 20%

Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on assignments and exams have been met. A grade of "A" will indicate significant achievement beyond the basic objectives and a grade of "C" will indicate not all basic objectives were met, but work was satisfactory for credit.

If there are any circumstances that limit or restrict your participation in the class or the completion of assignments, please contact the professor as soon as possible in order to work something out.


o       There will be an in-class mid-term exam on during the week of April 5 of approximately one hour duration.

o       There will be an in-class final exam on Monday, May 3, of approximately one hour duration.

o       One or more unannounced quizzes may be held during the term.

The mid-term and final exams will be closed book, but you may bring one 8-½ ´ 11 inch sheet of prepared notes (double-sided). Unannounced quizzes are closed book and closed notes. Each student should have a calculator available for quizzes and exams.

There is no make-up for missed quizzes. It is not in your interest to miss an exam, but if extraordinary circumstances apply, please contact the professor and your advisor beforehand so that we can work something out.

Academic Honesty

Unless explicitly noted, all work is to be done on an individual basis. Any violation of the WPI guidelines for academic honesty will result in no credit for the course and referral to the Student Affairs Office. More information can be found at


That being said, you are strongly encouraged to discuss with each other about ideas, distributed system concepts, course material, and especially the challenges you encounter in working with projects and/or in the Fossil Lab.

Once you and your classmates have worked out a solution to a problem, you must write it up in your own words or code it in your own coding style. Copying is not allowed. Borrowing algorithms from references, on-line sources, and other students is permitted provided that you cite your sources in your write-up and that you write out the solution in your own words or coding style!

Some assignments may be team assignments. For these, it is expected that all team members participate with roughly equal levels of effort. When you put your name on a team submission of an assignment, you testifying not only that you have fully participated in that assignment, but also your teammates are also testifying that you have fully participated.

Late Policy

Unless you have arranged otherwise with the professor at least one day prior to the due date, late submissions will be penalized 10% of total assignment value per day or partial day (with the weekend counting as one day), and no assignments will be accepted after seven days beyond the due date. All assignments are due at the time specified on the assignment. Projects must be submitted as directed in class. Exceptions to these rules can be made only beforehand.


BS/MS Project

Students wishing to receive both BS and MS credit for this course must complete an additional research project. The project for this term is specified here (.doc, html).

Note:  If you wish to earn BS-MS credit, you must apply to the Professor at the start of the term and get a signature on the appropriate form. If you wait until after the course is completed, or after your BS-MS project is completed, you will not qualify for BS-MS credit.


Reference Materials                                

The following papers are relevant to the material presented in class:–

Allman, Eric, “E-mail Authentication: what? Why? How?,” ACM Queue, November 2006, pp 30-34. (.pdf)

Anderson, Thomas E., Dahlin, Michael D., Neefe, Jeanna M., Patterson, David A., Roselli, Drew S., and Wang, Randoph Y., “Serverless Network File Systems,” Proceedings of the 1995 Symposium on Operating System Principles, Copper Mountain, Colorado, December 1995. (.pdf)

Birrell, Andrew D., Levin, Roy, Needham, Roger M., and Schroeder, Michael D., “Grapevine: An Exercise in Distributed Computing,” Communications of the ACM, vol 25, #4, April 1982, pp. 260-274. (.pdf)

Birrell, Andrew D., and Nelson, Bruce Jay, “Implementing Remote Procedure Calls,” ACM Transactions on Computer Systems, vol. 2, #1, February 1984, pp 39-59. (.pdf)

Dean, Jeffrey, and Ghemawat, Sanjay, “MapReduce: Simplified Data Processing on Large Clusters,” Communications of the ACM, vol 51, #1, January 2008, pp. 107-113. (.pdf)

Dean, J. and Ghemawat, S. “MapReduce: Simplified data processing on large clusters,” In Proceedings of Operating Systems Design and Implementation (OSDI). San Francisco, CA, 2004. pp. 137-150. (.pdf). Note: This paper is an earlier version of the CACM paper above, but it contains some details not included in the CACM paper.

Ghemawat, Sanjay, Gobioff, Howard, and Leung, Shun-Tak, “The Google File System,” Proceedings of the 2003 Symposium on Operating System Principles, Bolton Landing (Lake George), NY, October 2003. (.pdf)

Lämmel, Ralf, “Google’s MapReduce Programming Model — Revisited,” Microsoft Corp., Redmond, WA. (.pdf)

Lamport, Leslie, “Time, Clocks, and the Ordering of Events in a Distributed System,” Communications of the ACM, vol 21, #7, July 1978, pp558-565. (.pdf)

McDougall, Richard, “Extreme Software Scaling,” ACM Queue, September 2005, pp 38-48. (.pdf)

Patterson, David A., “The Data Center is the Computer,” Communications of the ACM, vol 51, #1, January 2008, p. 105. (.pdf) Note: This paper is technical perspective on the CACM paper by Dean and Ghemawat, listed above.

Rosenblum, M, and Ousterhout, J. K., “The Design and Implementation of a Log-Structured File System,” Proceedings of 13th ACM Symposium on Operating Systems Principles, Pacific Grove, California, October 1991, pp. 1-15. (.pdf)

Schroeder, Michael D., Birrell, Andrew D., Needham, Roger M. “Experience with Grapevine: Growth of a Distributed System,” ACM Transactions on Computer Systems, Vol. 2, #1, February 1984, Pages 3-23. (.pdf)

Smed, J., Kaukoranta, T., and Hakonen, H. “Aspects of Networking in Multiplayer Computer Games,” The Electronic Library, vol. 20, #2, Pages 87-97, 2002. (.pdf)

Sutter, Herb, and Larus, James, “Software and the Concurrency Revolution,” ACM Queue, September 2005, pp 54-62. (.pdf)

Waldo, J., Wyant, G., Wollrath, A., Kendall, S., “A Note on Distributed Computing,” Sun Microsystems Laboratory Technical Report, SMLI-TR-94-29, November 1994. (.pdf)