Cleveland State University Department of Electrical Engineering and Computer Science EEC 681/781 Distributed Computing Systems Catalog Data: EEC 681 - Distributed Computing Systems(4 credits) Pre- or co-requisite: EEC 484, Computer Networks Overview of distributed computing systems. Topics include networking, interprocess communication, remote procedure calling, name services, distributed time management, and file services. Some new technologies, including ATM networking, internetworks, multicast protocols, microkernel-based distributed operating systems, and distributed-shared memory, are discussed. Textbook: Distributed Systems: Principles and Paradigms, by Andrew S. Tanenbaum, and Maarten van Steen, Prentice Hall, 2002. Reference Books: Instructor: Distributed Systems: Concepts and Design (3rd Edition), by George Coulouris, Jean Dollimore and Tim Kindberg, Addison-Wesley, 2000 Advanced CORBA Programming with C++, by Michi Henning, et al., Addison-Wesley, 1999 Unix Network Programming: Volume 1 Sockets and XTI (2nd Edition), by Richard Stevens 1998 Dr. Wenbing Zhao Office: Phone: Fax: E-mail: Office hours: FH317 (216) 523-7480 (216) 687-5405 wenbing@ieee.org T Th 4:00-6:00pm and by appointment Course Objectives: This course provides a comprehensive overview of distributed computing principles with emphasis on state-of-art technologies for building a highly reliable distributed system. Through this course, students will get sufficient understanding and hands-on experiences on distributed systems modeling, inter-process communication, remote method invocation, processes and events ordering and synchronization, replication techniques and other fault tolerance principles. 1 Course Outline: Week 1 (Aug 30 - Sep 3) Topics Introduction To Distributed Systems; Distributed Systems Models And Design Principles; End-To-End Arguments Reading 1.1-1.5 Problems 1.1-1.19 2 (Sep 6 – 10) Labor Day – September 6 Layered Protocols, Remote Procedure Call, Remote Object Invocation 2.1-2.3; 2.1-2.14 3 (Sep 13 - 17) Examples Of Remote Object Invocation (DCE Remote Objects, Java RMI, CORBA); Message-Oriented Communication; Stream-Oriented Communication 2.3.5-2.3. 6; 9.1.1-9.1. 2; 2.4-2.5 2.15-2.26; 4 (Sep 20 – 24) Threads; Clients And Servers; Code Migration 3.1-3.5 And Software Agents 3.1-3.24 5 (Sep 27 – Oct 1) Naming Entities, Locating Mobile Entities; Removing Unreferenced Entities 4.1-4.3 4.1-4.23 6 (Oct 4 – 8) Midterm Test #1 – Monday, October 4 Clock Synchronization; Logical Clocks Ch. 1-4 5.1-5.2 5.1-5.5 7 (Oct 11 – 15) Columbus Day – Monday, October 11 Global State; Election Algorithms; Mutual Exclusion 5.3-5.5 5.6-5.13 8 (Oct 18 – 22) Distributed Transactions; Introduction To Consistency And Replication; Data Centric Consistency Models 5.6; 6.1-6.2 5.14-5.22; 6.1-6.14 9 (Oct 25 – 29) Client-Centric Consistency Models; Distribution Protocols 6.3-6.4 6.16-6.20 10 (Nov 1 – 5) 6.5 6.21-6.27 11 (Nov 8 – 12) Consistency Protocols Introduction To Fault-Tolerance; Process Resilience Midterm #2 – Monday, November 8 Reliable Client-Server Communication Ch. 5-6 7.1-7.3 7.1-7.8 12 (Nov 15 – 19) Reliable Group Communication; Distributed Commit; 7.4-7.5 7.9-7.17 2 13 (Nov 22 – 26) Recovery; Examples Of Fault Tolerance Infrastructures 7.6; 9.1.7 7.18-7.21 14 (Nov 29 – Dec 3) Introduction To Security; Secure Channels 8.1-8.2 8.1-8.10 15 (Dec 6 – 10) Access Control; Security Management; Examples Of Security Systems 8.3-8.7 8.11-8.7 16 (Dec 13 – 17) Final Project Presentation – December 15, 6:00-8:00pm Grading: Midterms 40% (20% each) Assignment 30% (programming assignments 10%, written assignments 20%; extra credit assignment 5%) Course Projects 25% (presentation 5%, the rest 20%) Class Participation 5% Note: Midterms are closed-book and closed-notes. There will be no make-up tests. If you have serious reasons for missing a test (accident, medical emergency, death in the family), upon presentation of an official written document validating the circumstance the test will be rescheduled. The date and time for the final examination (course project presentation) are specified by the University. No changes are allowed for any reason, including travel plans. Assignments: Programming assignments. For each assignment, the students are to submit the program source code together with documentation, containing a concise design specification (flow charts are encouraged), usage instructions and performance measurement results. Feel free to use a programming language that you prefer. A reliable point-to-point basic file transfer tool using UDP/IP A CORBA-based distributed naming service Implementation of a few well-known distributed algorithms Secure file transfer (extra credit) Written Assignments Problems in Chapter 5, 6, 7, 8 Late programming assignments are accepted within 5 calendar days after due date, but the scores will be lowered on a 20% per day basis. Course Project: The students taking this course are expected to design, develop, document, and demonstrate a substantial distributed system. Students can form a group of 2 on the course project. Each group will be asked to select a project topic from the following list or to propose their own topic, by October 18, 2004. By this date, each group should submit a first draft of the 3 specifications and technical design for their selected project. During the final examine, each group should give a presentation of the design, implementation and performance measurements of the selected project. Besides the presentation, for each project, it is required to turn-in the following: A detailed specification of the distributed system developed, explaining the main concepts exhibited by the project, and the protocols and techniques that the student designed and applied A well-documented programming framework/library with primitives and utilities that is relevant for the selected project topic A demonstration application showing the functionality supported by the programming framework/library Potential project topics: 1. Implementation of a group communication system 2. A fault tolerance infrastructure for CORBA servers 3. Peer-to-peer file distribution service (read-only). Multicast of requests, caching, parallelized transfers. 4. Stateless distributed file system: file server, client-side library, caching and consistency mechanisms. 5. Secure anonymous storage, via a peer-to-peer network. 6. Server clustering for high availability (failover) Due date: December 15 (the same day that the final examination is scheduled). The printouts of the design, implementation and performance measurement document and the code are due at the time of presentation. The electronic copy is due on the same day at 11:59pm. Late turn-in of the final course project is NOT accepted. 4