|
CEG 730: Distributed Computing Principles |
Catalog Description: [4 Credit Hours] Communicating sequential processes, clients and servers, remote procedure calls, stub generation, weak and strong semaphores, split-binary-semaphores, and distributed termination. Example languages: SR, Linda. Prerequisite: CEG 433/633
Home Page http://www.cs.wright.edu/~pmateti/Courses/730/ Bookmark this link and visit it periodically. All course related announcements will be posted on this page.
This course is about the foundations and principles involved in distributed systems with an introduction to recent systems and languages. The next course (CEG 830) concentrates on systems related issues, and on the design of distributed systems and applications.
I lecture on only the conceptually difficult sections of Andrews' book, leaving the rest as reading assignments.
The following is tentative. The order of topics will be roughly as indicated, except for project related discussions. The numbers in parentheses at the end of each topic is an estimate of the number of (75-minute) lectures I intend to devote.
Programming logic. Pre-, post conditions, and loop invariants. Starvation, deadlocks, livelocks. Interference, fairness, safety and liveness properties. Fine-grain and coarse-grain parallelism. Review of classic problems in concurrency. Review of semaphores, and conditional critical regions. Review of monitors. Proper definition of semaphore. Weak and strong semaphores. Split-binary semaphores. Starvation-free mutual exclusion. The technique of ``passing the baton.''
Remote Procedure Calls (RPC), and Clients and Servers. Implementation of RPC. Stub generation, marshaling arbitrary data structures. Sun XDR and RPCGEN. Study of an RPC example. Remote Method Invocation (RMI) and Object Serialization of Java.
CSP, communicating sequential processes. Asynchronous and synchronous message passing. Logical clocks, ordering of events. Heartbeat, probe/echo, and broadcast algorithms. Distributed mutual exclusion, Distributed implementation of semaphores, and distributed termination detection.
SR: Multiple primitives, Linda: Distributed data structures, and Java, JavaSpaces, and Hadoop.
Concurrent algorithms and concepts are often subtle. Please participate in the class room discussions. Feel free to discuss openly, to ask what may appear to be dumb questions, and to catch any errors that I make. Be alert, study the backup material right away, and solve the exercises promptly.
No problems will be assigned specifically as ``home work.'' However, you are expected to have studied problems that appeared in the old exams of this course, and the exercises of our textbook.
There is a local discussion group (see the link on the course home page) that you should read and participate regularly as a vehicle for discussing your solutions. I will read this group regularly, and note silently who is contributing what. I expect other students to be able to find flaws and fix them. Only when the most fundamental errors are being made will I break my silence and contribute a response.
There will be two exams contributing 30% plus 40% to the final grade. The date for the midterm exam will be announced in class. The date for the final exam is as set by the Registrar. Both exams are closed-book, and comprehensive. Many of the old exams for this course are available at the course home page.
It is necessary that you are comfortable in the use of networked machines based on Linux/Unix and X11. It is also assumed that you are fluent in Java, C/C++ and Unix process-related system calls. It is not assumed that you are familiar with either RPC or RMI. There are two programming projects using
that implement a multi-workstation oriented WhiteBoard (WB) client-server program.
The two projects are required. Not producing demonstrable (even if faulty) projects will award you a grade no better than an F in the whole course regardless of your performance in the exams.
The projects must be work done by you as a single individual. Do not use code of others, not even if it was given by the instructor in a past term. The projects are evaluated both by a demo and by skimming the source code and associated documentation.
The due dates and further description of the projects are on the course home page.