Distributed Computing Systems

CS 4513
D-Term 2007

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. Complete the content of CS-3013, Operating Systems, specifically with respect to file systems.
  2. Introduce the concepts of networking, distributed computing, and associated protocols.
  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.

Index


Prerequisites

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 should have a solid background CS-3013 and/or an equivalent Operating Systems course. You should also be proficient in programming a low-level language such as C, including the use of pointers, casts, malloc(), and free().

Course Information

Time and Place: Tuesdays and Fridays, 9:00 — 10:50 AM, Goddard Hall 227
March 13 — May 1, 2007
No class on Tuesday, April 17 (campus-wide project day)

Professor: Hugh C. Lauer

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

Office hours: by appointment, or (normally) ½ hour before and after each class

Office: Fuller Labs, room 239

 

Teaching Assistant: Choong-Soo Lee

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

Office hours:

Mondays 3:00-4:30 PM

Thursdays, 1:30-3:00 PM

Office: Fossil Lab

 

Textbook: You should already own one of the following from your Operating System course:–

o       Silberschatz, Galvin, and Gagne, Operating Systems Concepts, Seventh Edition, John Wiley and Sons, 2005.

o       Andrew S. Tanenbaum, Modern Operating Systems. 2nd edition, Prentice Hall, 2001.

 

Supplementary textbook: Andrew S. Tanenbaum and Maarten Van Steen, Distributed Systems: Principles and Paradigms, 2nd edition, Prentice Hall, 2007.

Class e-mail list: cs4513-all at the server cs.wpi.edu.

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

Students needing to be absent from class should notify the professor by e-mail or in person as soon as possible.


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 17, the campus-wide Project Day.

This class 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 approximately four programming projects during the term. Projects will be closely related and will build upon each other. It is in your interest to finish each one on time, in order to be able to begin the next one.

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: 35%
  • Programming Projects: 35%
  • Class participation, written homework, and quizzes: 30%

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.

Testing

o       There will be an in-class mid-term exam on Tuesday, April 3 of approximately one hour duration.

o       There will be an in-class final exam on Tuesday, May 1 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 to work something out.

Programming Projects

See below.

Be sure to put your name at the top of every file submitted as part of a programming project.

Academic Honesty

Unless explicitly noted, all work is to be done on an individual basis. While you are encouraged to talk with each other about ideas and course material, all work (i.e. code, test or homework answers) that you submit for grading must be your own work. 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 WPI Policies.

Late Policy

Unless you have arranged otherwise with the professor 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 start of class on the due date. Projects will 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).


Programming Projects

Fossil Lab:

 

Project assignments this term will involve the development of programs that spawn multiple processes and that communicate across the network. Since the normal mistakes that occur during learning and development of such programs can wreak havoc on the daily operation of the campus computing facilities and networks, we will use the Fossil Lab. This enables students to work in a realistic but protected and isolated environment without other computational activities.

 

If you elect to develop a programming assignment outside the Fossil Lab, please be advised that you are entirely responsible for any errors or chaos it might cause.

 

Instructions for setting up accounts on Fossil Lab machines can be found here:– (.doc, html)

 

General Requirements for Submitting Programming Assignments:

 

Each programming project submitted by a student will be compiled and tested by the professor or a grader. In order to make the grading process reasonable, a certain uniformity of project submissions and reasonable standard of programming practice are expected.

 

Programming projects this term will be compiled and tested on Fossil Lab machines running the version of Linux, C, C++, or Java installed on those machines.

 

All student programs should compile without warnings. Using the “-Wno_deprecated” switch is strongly discouraged without prior permission from the instructor.

 

When grading any project, the grader or professor will do the following to compile the components of the project submission:–

 

download from myWPI to student’s directory
cd {student’s directory}
make

 

and the following to erase all compiled components

 

make clean

 

If this does not work, we will not try to figure out how to compile and run your program and the assignment will not be graded any further.

 

To test your program, we will execute

 

 {name of program} {arguments}

 

For example, if you were asked to write a program called life with three arguments, we will type

 

life argument1 argument2 argument3

 

We will not look through your submission to try to figure out what you decided to call your program.

 

Submission of Programming Projects

 

Projects are to be submitted using myWPI (http://mywpi.wpi.edu). You should already be set up for using myWPI, with your normal CCC userid and password to log in.

 

To submit your project, zip all of the files together into a single zip-file with no subfolders. Name the zip file with your e-mail identity, concatenated with the word “-Project” and the project number. For example:–

lauer-Project1.zip

 

Then submit via the Dropbox feature of myWPI. The Dropbox can be accessed via the vertical menu bar on the left of the CS-4513 home page in myWPI. If you make a mistake or wish to change your submission, simply zip together all of your files again, including both the unchanged and the changed files, and submit again via the Dropbox using the same file name.

                                                                                                                

 

Programming Project Assignments:

 

Project #1 – Concurrent Game of Life (.doc, .html)
            Slides for assignment of project (.ppt, .html)

 

Project #2 – Distributed Game of Life (.doc, .html)

            Slides for assignment of project (.ppt, .html)

 

Project #3 – Simple Web Server (.doc, .html)

            Slices for assignment of project (.ppt, .html)


Lecture Slides                                           

Copies of the slides and notes used for lectures will be posted here just before or just after each class:

March 13

Course Introduction &
What is a Distribute Computing System

.ppt

html

 

Introduction to Networks

.ppt

html

March 16

Networks and Communication

.ppt

html

 

Remote Procedure Call

.ppt

html

March 20

Practical Issues with RPC

.ppt

html

 

Naming

.ppt

html

March 23

Introduction to Files

.ppt

html

 

Short Note on Disks

.ppt

html

March 27

Implementation of Files

.ppt

html

March 30

More on Files

.ppt

html

 

Distributed File Systems

.ppt

html

April 6

The Grapevine Distributed System

.ppt

html

 

Synchronization in Distributed Systems

.ppt

html

April 10

Synchronization in Distributed Systems (continued)

.ppt

html

 

Replication and Consistency

.ppt

html

April 13

More on Replication and Consistency

.ppt

html

 

Security and Authentication

.ppt

html

April 20

Security and Authentication (continued)

.ppt

html

April 24

Authentication (review)

.ppt

html

 

Atomic Transactions in Distributed Systems

.ppt

html

April 27

“Aspects of Networking in Multiplayer Computer Games”

.ppt

html

 


Reference Material                                

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)

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)

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

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)