CS514 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 CS514 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/cs514/2006sp

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 203.

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 most afternoons, Mon -- Wed. Feel free to schedule an appointment or to drop by without an appointment.

email: fbs@cs.cornell.edu.   Please send email only to request an appointment (and include some choices for days and times that you are available---afternoons are best.). Other email will be read but not answered; email is a painfully ineffective and impersonal way to discuss anything substantive. Besides, live interactions are more fun and more efficient.

Other Staff:
Tom Roeder (254-8833), Rhodes 492, tmroeder@cs.cornell.edu
Vivek Vishnumurthy (255-1146), Upson 4142, vivi@cs.cornell.edu

TA Office Hours:
Mon. 2:30 - 4:30 (Vivek) Upson 328A
Tues. 2:00 - 4:00 (Tom) Rhodes 492
Wed. 1:30 - 3:30 (Vivek) Upson 328A
Thurs.none
Fri. 1:30 - 3:30 (Vivek) Upson 328A

Prerequisites. The course is open to any undergraduate or graduate student who has mastered the material in CS414 (Operating Systems). Familiarity with JAVA or C# is required for doing the required programming assignments.
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:

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

Academic integrity violations will be prosecuted aggressively. Collaborate with your group on the project; do not collaborate with anyone on the assigned homeworks.

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