CS5414 (Fall 2010)
Distributed Computing Principles:
Overview and Organization

Course Overview. This course discusses abstractions and algorithms that constitute the foundations for implementing concurrent and distributed systems, with emphasis on supporting fault-tolerance. Lectures will present principles and algorithms; homework assignments (including programming projects) enable students to put these principles into practice.

Course URL:   http://www.cs.cornell.edu/courses/cs5414/2010fa

Lecture: Attendance is required. All students are responsible for announcements made in lecture and material that is covered in lecture. The suggested readings complement and reinforce material covered in lecture; they are not a substitute. If you must be absent from a class session, then make arrangements with another student to find out what you missed.

10:10 -- 11:25am Monday and Wednesday. Phillips 219.

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 about your use of email. Sending email is a good way to request an appointment or, for example, 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 Assistants:
Chi Ho, Upson 5162, chho@cs.cornell.edu
Bo Peng, Upson 5138, bpeng@cs.cornell.edu

TA Office Hours:
Mon. 3:00pm - 5:00pm Upson 5138
Tues. 11:00am - 1:00pm Upson 5162
Thurs.11:00am - 1:00pm Upson 5162
Fri. 3:00pm - 5:00pm Upson 5138

Prerequisites. The course is open to any undergraduate or graduate student who has mastered the material in CS4410 (Operating Systems). Familiarity with JAVA will be required for doing the required programming assignments. CS5414 replaces CS5410, so students who took CS5410 in Fall 2009 should not also enroll in CS5414.
Reading: There is no required textbook for this course. Readings in support of each lecture will be posted on the topic outline as the semester progresses.

The following texts, which are on reserve in the library, contain good treatments of one or more topics that we will cover.

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.

Final course grades will be computed as follows:

Make a "good faith effort" in this course and you will receive a grade of B- or better. Here, "good faith effort" means attending virtually all of the lectures and submitting evidence that you have worked hard on all of the programming projects and written assignments (even if you didn't succeed in finishing them or getting them right).

The various programming projects and written assignments require different levels of effort and, consequently, have different weights towards you final grade. This weighting will be announced along with the assignment.

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

You are encouraged to work in groups on the programming projects; you may form a different group for each programming project. Groups should comprise 1 to 3 students. Groups of size 2 or 3 are ideal for the kinds of projects you will undertake. 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. Each participant in a group should be able to explain the entire content of any submitted solution.

Students are required to work alone on the written assignments.

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 also expected to be familiar with the University's and the CS Department's various policies on appropriate use of computers.