CS514: Fault-tolerant Distributed Computer Systems -- Overview and Organization

Course Overview. Distributed systems are difficult to build and understand because failures must be tolerated and because system events are not totally ordered. Bandwidth limitations and latencies of networks also lead to some challenging engineering trade-offs. The focus of CS514 this semester will be on principles and techniques for building fault-tolerant distributed systems. Lectures will present the principles; programming assignments will enable students to put these principles into practice.

Course URL:   http://courses.cs.cornell.edu/cs514/2001fa

Lecture:Attendance is required. Class meets Monday nights, 7:30pm - 10:00pm in Upson B17, with the following exceptions: All make-up classes meet in Thurston 205.
Teaching Staff:

Professor Fred B. Schneider   (255-9221)
4115C Upson Hall
Office hours: Available after class and after 1:30pm on most afternoons he is in town. Drop by, and if you cannot be seen immediately, we will set a mutually agreeable time to meet.
email: fbs@cs.cornell.edu.   Email is a painfully ineffective and impersonal way to discuss anything substantive, and Professor Schneider refuses to allow email to replace live student-teacher interaction. Send email only to request an appointment (and please include feasible times in that email).

Teaching Assistant Adrian Bozdog   (255-3495)
5152 Upson Hall
Office hours: 1:00 - 3:00 pm on Tuesday and Wednesday; 10:45am - 12:45pm on Thursday
email: adrianb@cs.cornell.edu

Prerequisites. The course is open to any undergraduate or graduate student who has mastered the material in CS414 (Operating Systems) or CS519 (Engineering Computer Networks) or EE445 (Computer Networks and Telecommunications). The course programming assignments require facility with the JAVA programming language.
Reading. There is no required text for the course because no single textbook covers all of the topics we will discuss. Readings from a variety of sources will be suggested in lecture, as material is covered.

The single book having the largest overlap with the course content is the following, and it is on reserve in the Engineering Library:

Other useful texts, also on reserve in the Engineering Library, include:

Assignments and Grading. In keeping with the professional (and practical) orientation of the course, homework assignments are underspecified, open-ended, and motivated by problems that arise in the real world (messy as it is). You will have to think, refine problem specifications, make reasonable and defensible assumptions, and be creative. And you are expected to work alone on these homeworks.

Most of your grade is based on a multi-part JAVA programming project to design and implement a fault-tolerant, distributed, banking system.

Your final course grades will be computed as follows:

All assignments are due on the date stipulated. No late assignments will be accepted.

Students are expected to work in groups of 3 - 5 on each phase of the project. Working with other people not only can lead to a better understanding of the material but it will enable you to develop collaboration skills that should prove helpful throughout your career. Attacking CS514 assignments in groups will also enable you to manage the course workload in the time allowed by dividing the work and by working on different assignments in parallel. Each participant in a group, however, should be able to explain the entire content of any submitted solution.

MEng Project Option. Students enrolled in the Master of Engineering program in Computer Science may use the CS514 project to discharge the project requirement for that degree, as follows.