CS 549
Distributed Systems
Sample Syllabus
Course Prerequisites
You
are expected to have a certain amount of programming maturity, since
you will be developing a distributed application during the course of
the term. You should know Java since that will be the language
for the assignments, or you should be able to learn Java very quickly.
Course Objectives
The objective of this course is to give students a basic grounding in
designing and implementing distributed systems. A particular
emphasis of the course is on building reliable trustworthy
mission-critical systems. Although most programmers have heard of
programming environments like JEE and .NET for building distributed
applications, in fact these environments only automate the easiest
aspects of developing such applications. Dealing with failures is
still a hard problem, especially for very large geographically
distributed systems with real-time requirements. This course will
investigate what are the challenges with developing these applications
and when should particular tools be used.
Course Outcomes
[Applications] Implement and run distributed
applications using Java RMI and JEE.
[Transactions] Explain the use of transactions for
serializability and recoverability in distributed applications, and the
properties of protocols such as 2PC and 3PC for distributed commitment.
[Models] Explain the synchronous and asynchronous
models of distributed systems, reason about logical and vector time, and
explain possibility and impossibility results for global consensus and
Byzantine agreement.
[Replication] Explain the issues with achieving
consistency guarantees such as 1-copy serializability in replicated systems,
and approaches such as quorum consensus, the Paxos algorithm and process groups
for achieving agreement.
[Files and DHTs] Explain
cache consistency issues with distributed file systems, and routing protocols
for distributed hash tables.
Texts
The following is the main textbook for the course:
- [B] Required: Reliable Distributed Systems: Technologies,
Web Services and Applications by Ken Birman. Springer-Verlag, 2005.
The
following book is a good detailed tutorial on Web services in JEE 5,
although it is becoming dated (e.g. it has nothing on JAX/RS):
- [Han] Recommended: SOA Using Java Web Services by Mark Hansen. Prentice-Hall, 2007.
In
addition, there will be several "classic" papers from the literature,
frankly to compensate for the lack of a decent textbook in the area:
- [E2E] Jerome H. Saltzer, David P. Reed, and David D. Clark.
End-to-End Arguments in System Design.
Second International Conference on Distributed Computing Systems
(April 1981) pages 509-512.
Published with minor changes in
ACM Transactions in Computer Systems 2, 4, November 1984, pages 277-288.
Reprinted in
Craig Partridge, editor
Innovations in internetworking.
Artech House, Norwood, MA, 1988, pages 195-206.
- [L78] L. Lamport. Time, Clocks and the Ordering of Events in a Distributed System.
Communications of the ACM 21, 7 (July 1978), 558-565. Reprinted in
several collections, including Distributed Computing: Concepts and
Implementations, McEntire et al., ed. IEEE Press, 1984.
- [CL85] K.M. Chandy and L. Lamport. Distributed snapshots: Determining global states of distributed systems. ACM Transactions on Computer Systems Vol. 3, No. 1, pp 63-75.
- [L01] L. Lamport, Paxos Made Simple. ACM SIGACT News
(Distributed Computing Column) 32, 4 (Whole Number 121, December
2001) 51-58.
- [NFSv4] B. Pawlowski, S. Shepler, D. Noveck, D. Robinson and R. Thurlow. The NFS Version 4 Protocol. 2nd International System Administration and Networking Conference (SANE), 2000.
- [GFS] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. The Google File System. ACM Symposium on Operating Systems Principles, 2003.
Grading
The breakdown of grades is as follows:
- Assignments: 30%
- Midterm: 20%
- Final: 20%
- Participation: 30%
Course Schedule
Week
|
Date
|
Topics Covered
|
Reading
|
Assignments
|
1
|
9/2
|
Overview of networks and protocol stacks. Introduction to distributed
systems. Distributed systems vs network applications. End-to-end
system design. |
B 1, 2, 3. SRC81
|
|
2
|
9/9
|
RPC and communication. Example RPC protocol stacks.
|
B 4, 6, 7.
|
|
3
|
9/16
|
Three-tier middleware. JEE APIs. Design patterns for middleware.
|
B 8, 9, 10, 12.
|
|
4
|
9/23
|
Web services. SOAP/WSDL and REST.
|
B 8, 9, 10, 12.
|
|
5
| 9/30
| Cloud computing. Map-reduce and Hadoop.
|
|
|
6
|
10/7
|
Transactions. Serializability and recoverability. Optimistic and pessimistic concurrency control.
|
B 5.5, 14.5, 24.
|
A2: Deploy JEE application.
|
7
| 10/14
| Distributed transactions. 2PC and 3PC. Nested transactions. | B 5.5, 14.5, 24.
|
|
8
|
10/21
|
Failure models. Synchronous and asynchronous models. Global consensus. Byzantine agreement. Failure detectors. |
B 13, 14.
|
Midterm.
|
9
| 10/28
|
Time and ordering of Events. Distributed snapshots.
| B 14.3.
L78. CL85.
|
|
10
|
11/4
|
Replicated databases. Available copies. One-copy serializability. Quorum consensus.
|
L78.
|
A3: Routing protocol.
|
11
|
11/11
|
Paxos algorithm. State machine approach to replication. Byzantine broadcast.
|
L01. |
|
12
|
11/18
|
Process groups. Group membership services and multicast primitives.
|
B 15-17.
|
A4: Broadcast protocol.
|
| 11/25
| THANKSGIVING RECESS.
|
|
|
13
|
12/2
|
Distributed file systems and cache consistency. NFS, AFS, Google file system.
|
B 5.3, 5.4, 5.6. NFSv4. GFS.
|
|
14
|
12/9
|
Peer-to-peer systems. Distributed hash tables. Applications in multiplayer game-playing.
|
B 25.1, 25.2.
|
A5: Snapshots protocol.
|
| TBA
| FINAL EXAM.
|
|
|
Software
You will be using the
Java
programming environment, with
Web
Services, for the term assignment.
Class Format
-
Lecture slides: I will be making slides available
for the lectures at the start of each week. You should download and
view these materials as soon as possible.
-
Reading:
There will be reading associated with each topic. It is highly
recommended that you do the reading. You should view the slides as
intended to draw out what is important in the reading and explain the
key points of understanding. By doing the reading, you will get much
better depth of understanding in the material than can be made
available in the slides alone. Readings will be from the texts and from
other on-line materials as the term progresses.
-
Exams: There will two exams, a midterm exam and a final exam.
- Assignments:
There will be several assignments, using Java RMI and Java Enterprise
Edition, to implement a distributed system. You will be given
parts of a system and asked to complete them during the course of the
semester.
Ethical Conduct
Cheating during in-class tests or take-home examinations or homework
is, of course, illegal and immoral. A Graduate Academic Evaluation
Board exists to investigate academic improprieties, conduct hearings,
and determine any necessary actions. The term "academic impropriety" is
meant to cinlude, but is not limited to, cheating on homework, during
in-class or take-home examinations, and plagiarism.
Consequences of academic impropriety are severe, ranging from
receiving an "F" in a course, to a warning from the Dean of the
Graduate School, which becomes a part of the permanent student record,
to expulsion.
The Graduate Student Handbook, Academic Year 2006-2007, Stevens Institute of Technology, page 10