Computer Science 461

Distributed Computing and Networking

Fall 1997

Course Information

General Information

TTh 1:30-3:00, CS Bldg. 105.
Ed Felten, CS Bldg. 419, 258-5906, felten@cs, office hours by arrangement.
Teaching Assistants:
Jiannan Zheng, CS Bldg. 215, 258-1794, zjn@cs, office hours Wednesday 3:00-4:00, or by appointment.
Rege Colwell, CS Bldg. 214, 258-1793, rege@cs,office hours Monday 11:00-noon, or by appointment..
There are two required textbooks.
"Computer Networks: A Systems Approach" by Larry L. Peterson and Bruce S. Davie.
"Distributed Systems: Concepts and Design," second edition, by George Coulouris, Jean Dollimore, and Tim Kindberg.
There is one recommended textbook.
Java in a Nutshell by David Flanagan, second edition. You can buy this book cheaply at


The assignments will be written in Java, using version 1.1 of the Java Virtual Machine. You may do your code development on any system that is compatible with version 1.1 of Java. (This compatibility is sometimes advertised as "JDK 1.1 compatible".) If you're not sure whether a particular Java implementation will work, contact the instructor or teaching assistant. Regardless of where you do your development, you must submit your solution electronically on the CIT SparcServers.

You may use CIT's SparcServers, named after cities in Arizona, e.g., phoenix, tucson, and flagstaff, and the SparcStations located in room 101 of the CS building. Some of these machines run Solaris, and others SunOS 4.1. Students who have already registered for this course should already have their accounts. Students who had accounts in past semesters will have the same login (userid) and password. Other students must go to the CIT Clinic at 87 Prospect to set their password. Students taking several courses using CIT facilities will have one account and their disk quota will be the sum of the disk quotas for all courses. The Java software lives in /opt/jdk1.1.1 on these machines, so you might want to put /opt/jdk1.1.1/bin on your PATH.

If you want to install Java on your own computer, you can download it from the JavaSoft Web site.

You are responsible for ensuring that the code you write for the assignments is not readable by others.



For undergraduates, your grade will be calculated as follows:

These weights are subject to minor variation.

Exams are scheduled in advance; unless prior arrangements are made, a grade of zero will be recorded for missed exams.

Graduate students

Graduate students are invited to submit a proposal for a full-semester project and a half-hour oral exam in lieu of programming assignments and written exams. In this case, the project will be similar to the regular one described below (though a full-semester project will obviously have to be larger than an ordinary project), but it will count for 80% of the grade, and the proposal will be due on September 23, one week before Assignment 1 would normally be due. This allows some time to fall back to doing the programming assignments if desired. You must prepare a written proposal but also meet with the instructor in person on or before that date to discuss the project. The proposal should include the following:

If you need an extension to the September 23 due date, contact the instructor.

Also, unless there are extenuating circumstances, at most two students may collaborate on a full-semester project. Students will be required to meet periodically with the instructor or a TA throughout the semester to discuss progress (weekly or biweekly, about 10-15min each).

The half-hour oral exam will be scheduled during the final-exam period and will cover the full semester's material.

Undergraduates who might wish to pursue this option will be considered on a case-by-case basis. Important note: Undergrads must still take the written exams, and the project will count for 60% of the grade, in lieu of homeworks and a shorter project. See the instructor for approval.

Grads who do not wish to choose this option can simply submit the homeworks and take the exams, if they are taking the course for credit.


Attendance at lectures is expected but will not be recorded. Students are, however, fully responsible for all material presented in lectures. Class attendance is recommended strongly.

Lecture notes will be available electronically after they are presented.


There will be four required programming assignments, plus an optional (but recommended) assignment. You can get help with the assignments by sending electronic mail to or directly to the teaching assistants (see above), or by calling or visiting the instructor or teaching assistants during office hours. Ask for help when you need it!

Programs are due at 11:59 pm on the date specified. Assignments may be turned in up to one week late, with reduced credit as explained below. Exceptions to these rules will be made only under exceptional circumstances, and then only with an appropriate written excuse. There will no extensions due to scheduling conflicts, computer downtime, or other such factors.

Assignments turned in late will be graded according to the following formula: S = R min(.95, exp(-t/c)), where S is the grade given, R is the grade the work would have gotten if turned in on time, t is the amount of time by which the work was late, and c is equal to three days. Thus, the value of a late assignment decays exponentially, with a half-life of just over two days, but with a minimum of a 5% penalty. Examples: work turned in five minutes late gets 95% credit, one hour late gets 95% credit, six hours late gets 92.0% credit, one day late gets 71.7% credit, three days late gets 36.8%, and one week late gets 9.7%. If the code is turned in completely on time but the documentation is late, only half the penalty will be assessed as long as the TA has not yet begun to grade the assignment.

Course Project

This section applies to undergraduates or graduate students not taking the full-semester project option. With the full-semester project option, the number of students in a group and the proposal date are different.

In addition to the assignments, you will do a course project. You have wide latitude in deciding what do to for your project; of course, your choice must be satisfactory to the instructor. Some students may choose to build a distributed application program using the tools developed in the assignments.

You may do the project as an individual, or you may work in a group of up to four students. (Larger groups will naturally be expected to do more difficult projects.) We encourage you to work in groups, since this will generally allow you to manage a more interesting project.

You will be expected to hand in a Project Proposal in class on December 4. This should be a short document that clearly describes the project you would like to do, and briefly describes the approach you will take. If you will do a group project, the entire group should hand in a single proposal; it should say something about how you will divide up the work among the group members.

The project is due on Tuesday, January 13 (the "Dean's Date"). The project must be completed on time.

Collaboration Policy

Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate -- the program must be your own work (although you may ask teaching assistants for help in debugging). If you have a question about how to use some feature of Java, UNIX, etc., then you can certainly ask your friends or the teaching assistants.

Do not, under any circumstances, copy another person's program. Writing code for use by another or using another's code in any form is academic fraud and will be dealt with harshly. The instructor is on the Faculty-Student Committee on Discipline and knows what happens to people who break these rules.

Submitting Programming Assignments

Submit your solutions to the programming assignments electronically on the CIT Sparc machines, using the following command.

/u/cs461/bin/submit number files

number is the assignment number and files is the list of files for that assignment. For example,

/u/cs461/bin/submit 31 readme makefile main.c strings.c

submits the files readme, makefile, main.c, and strings.c for a fictitious assignment 31.

The submit command copies your files to the directory /u/cs461/submit/login/number and lists all the files that you have submitted for assignment number. login is your user account name. If you execute submit after the assignment deadline, your files are placed in directory number-late. You can run submit more than once, and you can submit partial lists of files.

There's also unsubmit, which allows you to `unsubmit' one or more files. For example,

/u/cs461/bin/unsubmit 31 main.c

would remove your main.c from the submission directory.

Submissions must include a file named index.html that contains a brief description of your program, its input and output, and its author and modification history. (It may, of course, include links to other files that you submit, or to the on-line course documentation.) It should describe your high-level design, the design decisions you faced, the tradeoffs you made, and a brief justification for your decisions. It should also include information about testing your code, if you want the TAs to be able to evaluate problems if your code does not pass their test suites. (If you have specific scripts you use to test the code, submit those as well.) This will be used to guide the TAs in evaluating your submissions.

The index.html file need not be fancy, as long as it conveys the necessary information clearly. We won't grade you on the beauty of your HTML writeup. The only requirement is that the index.html file be viewable with a standard Web browser. You may choose to submit several .html files connected by hyperlinks; it's up to you.

When appropriate, submissions must also include a file name makefile written so that the command `make' builds your program, and the command `make clobber' removes all `derived' files, e.g., object files, executable files, and libraries. For details about make, see the man page, which you can also display with the command type `man make'.

Keeping in Touch

The best way to contact the instructor and the teaching assistants is by electronic mail. Questions emailed to will generally get the fastest response.

Also, there is a course newsgroup, pu.cos.461. Course-related announcements will be posted there. You are also encouraged to use the newgroup to discuss anything related to the course.


This course has developed incrementally over the last few years, so the current version reflects the contributions of previous instructors, including Fred Douglis and Ramon Caceres. Some of the lecture presentations make use of of lecture material originally prepared by Peter Druschel, Jim Kurose, Larry Peterson, and Doug Schmidt.

Copyright (c) 1997 by Edward W. Felten

Last modified: Wednesday, October 01, 1997 09:53 AM