Fall 2009 CS5410 Intermediate 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 CS5410 this semester is on building fault-tolerant distributed systems. Lectures will present the principles and algorithms; programming assignments will enable students to put these principles into practice.

Course URL:   http://www.cs.cornell.edu/courses/cs5410/2009fa

Lecture: Attendance is required. All students are responsible for announcements made in lecture and material that is covered in lecture. If you must be absent from a class session, make arrangements with another student to find out what you missed.

10:10 -- 11:25am Monday and Wednesday. Thurston 205.

Please also leave Fridays 10:10 -- 11:25am open to facilitate make-up classes or additional discussion sessions.

Instructor:
Professor Fred B. Schneider   (255-9221)   4115C Upson Hall

Office hours: Available after class and afternoons on Mon, Wed, and Thurs. Feel free to schedule an appointment or to drop by without an appointment.

email: fbs@cs.cornell.edu.   Be sensible in your use of email. Sending email is a good way to request an appointment or alert the staff to a problem with a posted assignment. But email is a painfully ineffective and impersonal way to discuss anything substantive. Besides, live interactions are more fun and more efficient. So if you have a question about content, plan to speak in person with the professor or the TA.

Teaching Assistant:
Chi Ho (255-7421), Upson 5162, chho@cs.cornell.edu

TA Office Hours:
Tues. 12:30 - 2:30 Upson 328B
Thurs.12:30 - 2:30 Upson 328B
Fri. 1:30 - 3:30 Upson 328B

Prerequisites. The course is open to any undergraduate or graduate student who has mastered the material in CS4411 (Operating Systems). Familiarity with JAVA or C# is required for doing the required programming assignments.
Reading:

The single book having the largest overlap with the course content is the following:

Other useful texts include:

Assignments and Grading. In keeping with the professional (and practical) orientation of this course, assignments are deliberately underspecified, open-ended, and motivated by problems that arise in the real world (messy as it is). You will have to think on your own, build tools, refine problem specifications, make reasonable and defensible assumptions, and be creative.

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

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 2 - 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 CS5410 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.

Violations of the Cornell University Code of Academic Integrity will be prosecuted aggressively. Collaborate with other members of your group on the project; do not collaborate with anyone (within your group or outside of your group) on other homework.

Students are expected to be familiar with the University's and the CS Department's various policies on appropriate use of computers.