CS5414 (Fall 2012)
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/2012fa

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. Kimball B-11.

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

Due to the Jewish Holidays, the lectures scheduled for Monday Sept 17 and Wednesday Sept 26 are rescheduled to Friday Sept 21 and Friday Sept 28.

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:
Isaac Sheff (255-5577), Upson 5132, email: ics24@cornell.edu .

Deniz Altinbuken (255-1008), Upson 331, email: deniz@cs.cornell.edu .

TA Office Hours:
Mon. 3:30 - 5:00Upson 360 - Bay A (Isaac)
Tues. 3:30 - 5:00Upson 360 - Bay A (Deniz)
Wed. 1:00 - 2:30Upson 360 - Bay C (Isaac)
Fri 3:30 - 5:00Upson 360 - Bay A (Isaac)

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.
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. This is an MEng-level course, so expectations of students are somewhat different from what is typical in undergraduate courses. Assignments in CS5414 are deliberately underspecified and open-ended---just like what a software professional can expect in the "real world" (messy as it is). So you will have to think on your own, be prepared to make reasonable and defensible assumptions (but state and justify them when you do), build tools, refine problem specifications, 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.