Monday 4:30 - 7:10 pm,
Robinson B111
Prerequisites | Description | Readings | Syllabus | Grading | Home Page
Professor Sanjeev Setia
703-993-4098
setia at cs.gmu.edu
Course office hours: MW 3-4 pm
S&T II, Room 347
PREREQUISITES:
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
DESCRIPTION:
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.
READINGS:
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.
Sockets
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.
CORBA
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
The following topics will be covered: (note: this list does not represent the order in which these topics will be covered)
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.