Update history:
2010/11/29: |
initial version |
| Name: | Warren R. Carithers |
| Office: | 3617 Golisano (70-3617) |
| Phone: | (585) 475-5393 |
| Email: | wrc AT cs.rit.edu |
This course serves as an introductory survey of the broad area of distributed systems. In contrast to the Data Communications and Networks courses which focus on low-level network protocols, the Distributed Systems course focuses on high-level issues involved in designing distributed applications. Students are exposed to distributed system middleware, such as distributed objects and tuple spaces, and gain experience working with the middleware by doing programming projects. Students also analyze current distributed systems research and present written and oral reports of their findings. Together, the Data Communications and Networks I course and the Distributed Systems course give the student a complete introduction to the low-level and high-level aspects of distributed systems, preparing the student for further in-depth study in succeeding courses.
The student is able to explain
various architectures used to design distributed systems,
such as client-server and peer-to-peer.
Evaluation: Exams
The student is able to build distributed systems
using various interprocess communication techniques,
such as remote method invocation, remote events,
and tuple spaces.
Evaluation: Exams, programming projects
The student is able to build distributed systems
using various techniques for tolerating partial failures,
such as leasing and replication.
Evaluation: Exams, programming projects
The student is able to build distributed systems
using various interprocess coordination techniques,
such as distributed mutual exclusion,
distributed monitors,
and tuple spaces.
Evaluation: Exams, programming projects
The student is able to explain various distributed algorithms,
such as logical clocks and leader election.
Evaluation: Exams
The student is able to analyze and explain
current distributed systems research literature.
Evaluation: Written research report, oral presentations
The prerequisites for this course are:
4003-707 (Advanced Programming).
4003-713 (Operating Systems).
In essence, you need to be comfortable with these topics:
These are prerequisites, not corequisites - to succeed in this course, you should have already passed these courses, or their equivalents. Taking them at the same time as this course is not sufficient. See me immediately if you are missing one or more of the prerequisites, or you may be dropped from Operating Systems I without further warning!
The optional textbook for this course is Distributed Systems: Principles and Paradigms, Second Edition, by Tanenbaum and Van Steen, Prentice Hall, 2007.
Programming assignments you do for this course will be done in Java. Although one is not required, having a Java textbook is a good idea.
Your final grade will be based on the following components: a team project, two individual projects, and the final exam. The distribution between these components is:
| 5% | Team formation | |
| 5% | Team presentation attendance | |
| 20% | Team presentations | |
| 20% | Team deliverables | |
| 15% | Programming project 1 | |
| 15% | Programming project 2 | |
| 20% | Final exam |
There is one exam schedule for this course, a two-hour comprehensive final exam. This is tentatively scheduled as follows:
Last updated: 2010/11/29 11:18:14Final Exam: Due electronically by 11:59pm on Friday, February 25, 2011.
There will be a set of two programming assignments during the quarter. These are individual assignments, and are separate from the team project. More information about these will be provided later in the quarter.
In addition to the graded assignments described above, you will do a research investigation as part of a team of two or three persons. Your grade will be based on the following details:
More details are provided on the team project web page.
Academic dishonesty will be dealt with in accordance with DCS and RIT policies.
RIT's
Honor Code
(section 1 of the
RIT Students Rights and Responsibilities handbook).
A general statement that sets standards of behavior for all members of
the RIT community.
RIT's
Academic Honesty Policy
(section 18 of the
RIT Students Rights and Responsibilities handbook).
Defines the basic forms of academic dishonesty (cheating, duplicate
submission, and plagiarism) and explains the official RIT policy
regarding academic dishonesty.
The
DCS Policy on Academic Integrity.
Explains the official Department of Computer Science policy regarding
incidents of academic dishonesty.
Disclaimer: Normally, the number, type, and relative weights of assignments will not change from those specified in the syllabus and other course documents. However, I reserve the right to make changes to these or any other facet of the course, at my discretion, based upon the events of the quarter; if such a change must be made, you will be notified in class, via electronic mail, and on my web page for the course.
Coursework: With the exception of the team project, unless otherwise specified in the assignment, all work you submit for grading must be your own. Code or ideas (specific algorithms, optimizations, etc.) obtained from or inspired by other sources must be properly attributed.
Withdrawing:
During the add/drop period (the first seven calendar days of the quarter),
you may drop this course and it will disappear from your transcript.
After that time, you can only withdraw from the course; the course will
appear on your transcript with a grade of W.
Deadline to add/drop: Sunday, December 5, 2010
Deadline to withdraw: Friday, February 4, 2011
Project submission: Unless otherwise indicated in the assignment, programming project solutions are to be submitted electronically by 23:59:59 (11:59:59pm) on the specified due date. Any day of the week is a valid due date. Solutions submitted through any other method (e.g., sent via email, slipped under my office door, put in the bin on the wall outside my office, etc.) will be ignored.
Examinations: If you are unable to take an examination for a good reason (by my standards), I expect to be notified BEFORE the exam takes place. The final exam will not be handed back; you may examine it in my office.
Final Exam: RIT has an official set of Final Examination Policies which detail procedures related to the scheduling of final exams. Most important among these is the procedure to be followed by students who wish to request a change in date or time for an exam. Briefly, such a request is only accepted if the student has an exam conflict (i.e., two or more exams scheduled at the same time) or the student has three or more exams scheduled on the same day. Requests for rescheduling an exam must be submitted by the last day of week six.
Assignment of final grades:
|
As this is a graduate class, higher performance is expected of students.
Accordingly, I use a modified percentage-based grading scale in this class.
I reserve the right to alter these division points as I see fit at the end of the quarter if I believe it to be necessary, based on my overall evaluation of individual or class performance and effort. |
|
Grading:
This is a graduate elective course. Think about what this should mean to you. You will be expected to incorporate all you have learned so far into this course; i.e., you will lose points for not following assignment instructions, for submitting code that is sloppy, undocumented or unstructured, etc.
Late submissions are generally not accepted without my prior approval.
Your project submissions may be graded by a grader. If so, and you have complaints about your grade, first talk to the grader. If you are still convinced there is a problem and you are unable to convince the grader, come and see me.
All requests for regrading must be made within one week of the original return date for the assignment.