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:


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):


In addition, there will be several "classic" papers from the literature, frankly to compensate for the lack of a decent textbook in the area:


Grading

The breakdown of grades is as follows:

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.
A1: RMI and sockets.
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

  1. 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.
  2. 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.
  3. Exams: There will two exams, a midterm exam and a final exam.
  4. 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