George Mason University

CS 707 Distributed Software Systems

Spring 2006

Monday 4:30 - 7:10 pm,  Robinson B111

Prerequisites | Description | Readings | Syllabus | Grading | Home Page

Professor Sanjeev Setia
setia at

Course office hours: MW 3-4 pm
S&T II, Room 347


CS 571 (Operating Systems), CS 706 (Concurrent Software Systems) and knowledge of C and/or C++ and/or Java.
NOTE: If you do not have these prerequisites, you need my permission to take the class

The class focuses on concepts that arise in the design and implementation of distributed applications. Issues that arise in making distributed applications secure, reliable, and scalable will be discussed. Programming assignments will involve middleware technologies such as TCP/IP sockets and RMI.

The textbook for this class is
Andrew Tannenbaum and Maarten van Steen, ``Distributed Systems: Paradigms and Principles'', Prentice-Hall, 2002.

In addition, here are recommendations for books on specific topics. Class notes will also be provided as necessary.


1.      D. Comer and S. Stevens, ``Inter-networking with TCP/IP Vol III: Client-Server Programming and Applications'', 3rd edition, Prentice Hall, 1999.

2.      Merlin Hughes, Conrad Hughes, Michael Shoffner, Maria Winslow. ``Java Network Programming'', Manning Publications Co., 2nd edition, 1999.

3.      Stevens, W. Richard, ``Unix Network Programming'', Prentice-Hall, 2nd Edition, 1998

The examples in books (1) and (3) above are in C, whereas book (2) focuses on Java. There are probably several other books available on Java network programming. You will be free to use either Java or C or C++ for the programming assignments in this class, so you should probably buy a book appropriately. Book (1) above is more like a textbook, whereas book (3) is a reference text with more information on sockets than any book ever written.


M. Henning and S. Vinoski. ``Advanced CORBA Programming with C++'', Addison Wesley, 1999.

This book covers CORBA in great depth. The examples are in C++. Several Java books include a chapter on Java IDL/CORBA.

Distributed Systems and Applications

Some of the material in these books is useful for this class

  1.  G. Coulouris, J. Dollimore, T. Kindberg, “Distributed Systems: Concepts and Design,” 4th Edition, Addison-Wesley, 2005.
  2. J. Kurose, K. Ross, "Computer Networking: A Top-down approach featuring the Internet," 3rd Edition, 2005.
  3. G. Andrews, "Foundations of Multithreaded, Distributed, and Parallel Programming," Addison Wesley, 1999.
  4.   K. Birman, "Reliable Distributed Systems: Technologies, Web Services and Applications,"  Springer Verlag, 2005.



The following topics will be covered: (note: this list does not represent the order in which these topics will be covered)

  1. Distributed systems, computer networks, concurrent programming (Review)
  2. Distributed Systems Concepts
    1. The Client/Server model
    2. Naming
    3. Coordination and Synchronization
    4. Consistency & Replication
    5. Fault Tolerance
    6. Peer to Peer Systems
  3. Middleware technologies
    1. TCP/IP Sockets
    2. RPC/RMI/CORBA/Web Services
    3. Message-oriented Middleware


There will be three programming assignments involving the development of a distributed application using various middleware technologies, e.g., sockets, CORBA/RMI, etc.  The software required for these projects is available on the computers in the IT&E Lab.

60% of the course grade will be based on these programming assignments. In addition, there will be a mid-term exam in March worth 20% of the grade. The final exam will account for the remaining 20% of the grade. (The final exam may be a take-home exam; this decision will be announced in April)


Class notes, slides, handouts, etc. will be available at the class home page.

Back to the top.