COMP 413: Syllabus - Fall 2003
Instructor
Peter Druschel, druschel@cs.rice.edu,
DH 3007, x4664.
Lectures
TTh 1300-1420 (tentative), room TBD
Enrollment
Enrollment is limited to about 15 students.
Office hours
By appointment (please use email).
Labbies
Alan Mislove, amislove@cs.rice.edu.
Atul Singh, atuls@cs.rice.edu.
Questions and Answers
Questions of general interest should be posted to the rice.owlnews.comp413
newsgroup. Answers will be posted as soon as possible. Other questions
should be directed to the labbies by sending mail to comp413.
Secretary
Melissa Cisnero, mcisnero@cs.rice.edu,
DH 3122, x4834.
Prerequisites
COMP 312, COMP 421, or permission of instructor. Software
design experience, programming proficiency in Java and familiarity with
design patterns is absolutely required. Students will undertake
a real software design project and be expected to deliver a working product.
Therefore, students must be committed to delivering a quality design, robust,
well-documented and thoroughly tested software. Also, students must be
able to deal with flexible requirements, deadlines and shifts in the schedule
to address unforeseen problems that are likely to arise in any real project.
Time Management
The project in this course requires a great deal of initiative, motivation
and energy. Each team is asked to explore and study a different technical
area on its own, rather than merely applying material that was previously
covered in the lectures. Moreover, the course project depends on the timely
completion and correctness of each team's component. It is therefore imperative
that students manage their time in a responsible manner and ensure that
the team makes steady and adequate progress towards completing its component.
Readings
You might want to refer to one or more of the following books for background.
If you're considering the purchase of a general text on distributed systems,
I recommend one of the first two books (the first book is longer and covers
practical aspects in more detail; the second is stronger in its treatments
of distributed algorithms). If you already own the textbook used in COMP
421 (Tanenbaum's Modern Operating Systems), the coverage of distributed
systems in the second half of that book will do. We will also provide additional
reading materials relevant to the project.
-
Distributed Systems: Concepts and Design. G. Coulouris,
J. Dollimore and T. Kindberg. Third Edition. Addison-Wesley, 2001.
ISBN 0201-619-180.
-
Distributed Operating Systems and Algorithms. R. Chow, T. Johnson.
Addison-Wesley Publishing Company, 1997. ISBN 0-201-49838-3.
-
Distributed Systems. Sape Mullender (Editor). Second Edition.
Addison-Wesley Publishing Company, 1993. ISBN 0-201-62427-3. A very
good collection of articles by leading researchers in the area.
-
Building Secure and Reliable Network Applications. K.P. Birman.
Manning Publications Co., 1996. ISBN1-884777-29-5. A very good
overview on distributed systems and how to make them reliable.
-
Theory and Practice in Distributed Systems. K.P. Birman, F. Mattern,
and A. Schiper. Springer Verlag, LNCS 938, 1995. Lecture notes for
a course in Distributed Systems. One of the only ones to cover both theory
and practice in the same book.
-
Java Programming with Corba, second edition, Andreas Vogel, Keith
Duddy, John Wiley & Sons, 1998, ISBN 0-471-24765-0.
Lecture Notes
Lecture notes and handouts will be made
available on the Web at www.cs.rice.edu/~druschel/comp413/lectures.These
notes are not necessarily self-contained, complete, or coherent. They
are meant to aid you in your own note taking. They are certainly not a
substitute for attending class. Lectures will cover material on
distributed systems architecture, communication, naming and directory
services, state replication and coherence, synchronization, atomic
transactions, fault-tolerance and security.
Project
The project in this course is to build ObjectWeb,
a powerful WWW-like system based on distributed objects and a peer-to-peer
infrastructure. This project exposes students to key problems and solutions
that one encounters in building a distributed application or system, and
provides hands-on experience with the design of distributed systems using
state-of-the-art tools and middleware (Java, distributed objects, p2p substrates).
Students will work in teams and each team will work on a different component
(subsystem) of the overall project. The success of the overall project
depends on the quality of each component. Therefore, it is critical for
the overall success of the course project that each team does its job well.
Teams are expected to deliver a component that satisfies its specification,
is robust, well documented, reusable, readable and maintainable by people
other than the designers/implementor.
There are three steps. The first step is to develop, through discussions
in and outside of class, a specification for the component your
team will develop. The component specification is the contract that ensures
interoperability between the components designed by different teams, and
it is the standard to which the completed component is held. The second
step is to design the component, based on information obtained from the
lectures, readings and group self study. The result is a specification
and design document that will be linked from the course page. The specification
and design will be presented in class by the groups in order to inform
the rest of the class of the team's findings, to get feedback and to eventually
get approval of the specification and design, after possible revisions.
The final step is to implement, test, and evaluate the component; produce
documentation for the component, describing its use, structure and performance;
and to integrate the components developed by different teams and to test,
evaluate and demonstrate the resulting system.
Exams
There will be a midterm and a final exam. The exams will be take-home and open book,
and will cover material from lecture, required readings, and the project.
There may also be some homework assignments.
Honor Code Policy
All assignments in the course are conducted under the Rice Honor Code.
Students are encouraged to talk to each other, the labbies, the instructor,
or anyone else about the assignment. Consulting another student's homework
solution is prohibited, and submitted solutions may not be copied from
any source. However, students are allowed to incorporate existing code
from any source into their project components, provided that they disclose
the nature and source of the incorporated code in the design documentation.
Grading
A tentative composition of the grade is 50% for the project, and 50% for the
exams. The score for the project will be determined
as follows:
a) 50% for correctness (i.e., compliance with the
approved specification);
b) 20% for clarity and completeness of the specification,
design and documentation, as shown in class presentation and documents;
c) 20% for the overall success of the course project
(not just the team's component!);
d) 10% based on a self evaluation among the team
members.
Students with Disabilities
Any student with a documented disability needing academic adjustments or
accommodations is requested to speak with me during the first two weeks
of class. All discussions will remain confidential. Students
with disabilities will need to also contact Disability Support Services
in the Ley Student Center.