A distributed system is a network of processes collectively performing a meaningful job or proving a service to the users. Such systems are being increasingly relevant to our lives and our society. How processes communicate and interact with one another, how to guarantee correctness and build tolerances to various kinds of failures or dynamic behaviors, how to design distributed algorithm for specific problems, manage replicas, and provide group communication services are up for discussion. This course will primarily deal with the theory and algorithmic aspects of distributed systems. (From Ghosh's course website, accessed February 6, 2017.)\\


Required Text: Ghosh, Sukumar, Distributed Systems: An Algorithmic Approach, Second Edition
Chapman \& Hall/CRC Computer and Information Science Series, copyright 2015. ISBN 987-1466552975
Class Web Site:


COMP 210: Data Structures ( or demonstrated programming competency)

And at least one of the following:

Topics to be covered:

(A preliminary schedule can be found on the course web page.)

Week 1 Introduction, syllabus, guidelines, and background
Week 2 Models of Communication
The need for a model
Week 3 Interprocess Communications (IPC)
Shared Variables
Relationships among models
Week 4 Representing Distributed Algorithms
Guarded Actions
Atomic Operations
Week 5 Program Correctness
Weeks 7 \& 8 Mutual Exclusion
Week 9 Distributed Consensus
Week 10 Peer-to-peer networks and leader elections
Exam Week Final Exam as announced by the College

Grades will be based on:

Attendance and Class Participation 10%
Homework 25%
Projects and Quizes 25%
Two Exams and Final 40%

Attendance and Participation:

Regular attendance and fully engaged participation is expected of all students in this course. In the case of any absence, whether excused or not, you are responsible for all the material covered in class. We may occasionally do in-class projects. If you are not in class, you cannot get credit for these projects. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up.


Assignments, announcements, class notes, and other material will be made available on the course web site:
Students are responsible for checking this resource frequently.

Homework is an integral part of the course. Homework problems from the textbook, and possibly elsewhere, will be assigned each day, along with several pages of reading. You are expected to come to class having completed the reading. You should also bring questions you have from the reading and the exercises to class. There will always be at least one class day for questions and discussion between the assignment and its collection. Homework is due at the beginning of class.

There will be several Projects and Presentations assigned throughout the quarter. These will be opportunities to apply the language and concepts learned in class, and to explore other related concepts.

There will be three Exams in this class: an Exam at the end of third week, an Exam at the end of seventh week, and a Comprehensive Final Exam. The exams are meant to indicate how well you can apply what you have learned. They will encourage quick thinking and careful synthesis of ideas.

Collaboration and the Honor System

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Homework questions: You should feel free to work with others on the homework questions. As you work with others, keep in mind that the goal is not just getting a solution to the problem, but learning how to solve the problem yourself. The write-ups of these problems should be your own work. You should also state at the top of the write-ups who you discussed these problems with. You should also feel free to take advantage of the Academic Resource Center (ARC) for help on the homework questions.

Projects and Presentations: You may work in pairs or individually on any of the projects that are assigned. You may not work with the same partner more than once. When you work with a partner, you should only submit one copy of the project, with both names on it. I may also ask both partners to submit separate statements accounting for who did what on the project.

You may discuss the requirements and strategies of a programming project with others in the class, but you should not look at code belonging to anyone outside your team or make your code available to anyone other than your teammate. If you have code-specific questions you should address them to a TA or faculty member only. Computer Science TAs have evening office hours, Sunday through Thursday. Check the door of OU 312 for a schedule. You should acknowledge in your program documentation any help you receive.

Exams should be entirely your own work.

Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.