CSE 40771/60771 - Distributed Systems - Fall 2008

Prof. Douglas Thain
Email: dthain at cse dot nd dot edu
Office: 382 Fitzpatrick
Office Hours: 1:45-2:45 Tuesdays, 2-3PM Wednesdays

TA: Yingxin Jiang
Email: yjiang3 at nd dot edu
Office: 214 Cushing
Office Hours: 4-5PM Mondays, 11-12AM Tuesdays

Course Web Page:: http://www.cse.nd.edu/~dthain/courses/cse60771/fall2008

This course will introduce students to the theory and practice of distributed systems.

The theoretical of distributed systems will be studied via the course textbook, Distributed Systems: Principles and Paradigms by Andrew Tannenbaum. Students will be evaluated on this material through written assignments and exams. The practical aspects of distributed systems will be studied through a series of in-depth lectures and practical assignments on working distributed systems, in particular the Condor distributed processing system, the Chirp distributed file system, and the Hadoop distributed data processing system. Students will install, operate, modify, and evaluate each of these systems to gain practical experience in the strengths and weaknesses of each.

Students will have access to several large computing systems for the assignments and final project, including a small 4-CPU cluster dedicated to the class, a 600-CPU Condor pool available throughout the semester, and a 1000-CPU cluster courtesy of the Google Academic Cluster program, which will be made available during the month of November.

Prerequisites

Course Outcomes

Students successfully completing this course will be able to:
  • Describe the architecture and operation of a variety of common distributed systems.
    Presented in course readings, evaluated in exams.
  • Compare the architecture and operation of various distributed systems.
    Presented in class discussions, evaluated in exams.
  • Describe how distributed systems are fundamentally different from standalone systems in matters such as naming, invocation, synchronization, and fault tolerance.
    Presented in course readings, evaluated in exams.
  • Construct, test, and evaluate programs in a distributed environment.
    Presented, practiced, and evaluated in the practical assignments.
  • Communicate technical results orally and in writing.
    Practiced in assignment writeups and final project talk.
  • Attendance

    Students are expected to attend all class meetings and exams, and turn in all assignments before the due date and time. Exceptions will only be made for the grave circumstances outlined in the duLac student life handbook. Students who must be absent due to participation in a University activity must confer with the instructor at the earliest possible date.

    Grading

    All assignments are due at the beginning of class on the date due. Late assignments will receive no credit. This includes assignments submitted after class has begun.

    Paper assignments should be brought to class. Programming assignments will be turned in electronically by copying all required files to a "dropbox" directory. You are free to turn in assignments multiple times before the deadline expires. It would be a good habit to turn in an incomplete but working assignment on a daily basis. Thus, there is no excuse for failing to turn in an assignment: everyone should turn in something long before the deadline. Exceptions will be made only in grave circumstances.

    For each assignment, a numeric grade will be assigned. Throughout the semester, students will be advised of their numeric grades and the class average. At the end of the semester, number grades will be converted to letter grades.

    If a student believes that an error has been made in grading an item, it must be brought to the attention of the TA within seven days after the item has been returned. Factual and clerical errors will be cheerfully corrected. Matters of judgement are left to the TA's discretion. The student may appeal any decision to the instructor, but it is very unlikely for the instructor to over-rule the TA's decisions.

    Grades will be weighted as follows:
    Five Assignments 50 %
    Final Project 20 %
    Midterm Exam 15 %
    Final Exam 15 %

    Collaboration

    In-class exams are to be completed alone.

    Practical assignments 1-5 are to be completed alone.

    The final project may be performed singly or in pairs. You are encouraged to seek out and exploit external manuals, books, websites, and other documentation that will help you to complete the assignment, provided that you indicate what sources you have used. However, all software development, experimental work, and writing of results must be done solely by you and your partner.

    You must read and abide by the Academic Code of Honor.

    A Note About the Assignments

    To undertake the class assignments, you will have to spend some time learning how to use each of these systems. The lectures will explain the general principles and direct you towards reference materials. However, you will need to figure out some of the details on your own by reading manuals and experimenting on your own. Do not expect to succeed on the first try. You may need to consult with the instructors during class, office hours, or via email to solve problems. Thus, start working on each assignment right away, and do not leave it until the last minute.