Colorado State University Computer Science Department

CS 518
Distributed Software Systems Development
Spring 2003

Course Information

Course date: 01/21/03 - 05/11/03
Location: 133 Wagar (subject to change)
Meeting days: Tuesdays, Thursdays
Meeting times: 8:00 am - 9:15 am
  1. Operating Systems (CS451) or equivalent course
  2. and Object-Oriented Design (CS414) or equivalent course
  3. or, written consent of instructor

Instructor Information

Instructor: Sudipto Ghosh
Phone: (970) 491-4608
Fax: (970) 491-2466
Office hours: TR 2:00-3:00, or by appointment

Office location: Rm 224 University Services Center,
Computer Science Department,
Colorado State University, Fort Collins, CO 80523

Biography: Sudipto Ghosh received the Bachelor of Technology degree in Computer Science and Engineering from the Indian Institute of Technology, Kanpur, India in 1993. He received the Master of Science degree in Computer Science from Iowa State University in 1995 and the Doctor of Philosophy degree from Purdue University in 2000. He is currently an Assistant Professor in the Computer Science Department at Colorado State University, Fort Collins, Colorado. His research interests include software engineering and distributed object systems. He is a member of the Association of Computing Machinery and the IEEE Computer Society.

Course Goals

CS518 is a graduate course teaching principles of developing distributed system using distributed object and component-based middleware. Students will learn how to build distributed component-based systems that are integrated across the internet. CS518 is a programming-intensive course and has a significant project component.

The following topics will be covered in the course: (Subject to change)

  1. Characterization of Distributed Systems.
    1. Introduction.
    2. Examples of Distributed Systems.
  2. System Models.
    1. Architectural Models.
    2. Fundamental Models.
  3. Distributed Objects and Remote Invocation.
    1. Communication between Distributed Objects.
    2. Remote Procedure Calling.
    3. Events and Notifications.
    4. Java RMI Case Study.
  4. Jini
    1. Robust, evolvable, plug-and-play systems
    2. Service discovery, registration and lookup
    3. Remote events, leasing
  5. JavaBeans
    1. Reusable component development
  6. Components - Enterprise Java Beans
    1. Transaction processing
    2. Session Beans - stateful and stateless
    3. Entity Beans
  7. Design patterns for Concurrent and Networked objects
    1. Service access and configuration patterns
    2. Event handling patterns
    3. Synchronization patterns
    4. Concurrency patterns


You are responsible for any announcements made in class and on WebCT. Late work will not be accepted without prior permission. Extensions may be granted when permission is sought in advance for reasons that are unexpected and beyond your control. All homework assignments and projects are to be done individually. Read the departmental policy on cheating, incompletes and class attendance.

Course Materials

  • Required Texts:

    1. Distributed Systems: Concepts and Design by George Coulouris, Jean Dollimore, Tim Kindberg, Addison Wesley Longman, ISBN: 0-201-61918-0 Copyright 2001, 3rd edition.

    2. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects, Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann, John Wiley & Sons, 2nd edition Vol 2 (September 25, 2000), ISBN 0471606952.

  • Supplementary Texts:

    1. Java 2: The Complete Reference, Herbert Schildt, McGraw Hill Osborne, 5th Edition. ISBN: 0072224207

    2. Enterprise JavaBeans[tm] Technology - Applying Enteprise JavaBeans: Component-Based Development For The J2EE[tm] Platform by Vlada Matena, Beth Stearns

    3. Jini[tm], Example by Example by W. Keith Edwards and Tom Rodden First edition, Prentice Hall PTR, Copyright: 2001, ISBN 0-13-033858-3

  • Papers: Selected from journals and relevant conferences

    Course Requirements


    Summary of grading criteria:

    • 25% - Homework assignments
    • 30% - Project
    • 20% - Midterm
    • 25% - Final

    Final letter grades will be based on the relative distribution of total scores and not on any preset numerical grade.


    I will assign programming homework on Java RMI, Jini, Java beans and EJB. You will get about 2-3 weeks for each assignment. Each assignment needs to be turned in electronically by 11:59pm on the due date.

    Assignment Topic Assigned on Due
    1 Java RMI Jan 28 Feb 13
    2 Jini Feb 13 Mar 20
    3 Java beans Mar 20 Apr 3
    4 EJB Apr 3 Apr 29


    I will assign a project just before the Spring break. I will suggest several topics. You may suggest topics as well. The project will probably require you to do the following:

    1. learn a new technology on your own (e.g., CORBA, SOAP-RPC, .NET),

    2. implement an application using the new middleware technology

    3. read literature comparing your middleware technology to one of Java RMI, EJB, Jini

    4. compare your own experiences with the new middleware and Java RMI/EJB/Jini.

    Alternatively, you may implement prototypes for our software engineering group's research projects. Examples are:

    1. Extend remote assertion specification and checking capabilities for arbitrary object types in Java RMI. Currently our prototype allows checking attributes of objects only when the attributes have primitive datatypes.

    2. Explore the use of aspect oriented development for achieving "middleware transparency." We have had limited success in converting a stand-alone application to a Jini-based distributed application using Aspects. You will explore other middleware technologies and find the limitations of this approach and perhaps investigate aspect oriented modeling approaches.

    3. Extend our interaction diagram extraction tool. Currently our prototype is able to extract behavioral models from run-time information in the form of UML sequence diagrams. We need people to work on other complexities in the execution as well as extend the work to UML statemachines.

    4. Students interested in security can explore intrusion detection techniques and the development of survivable systems based on middleware techniques.

    A demo and a 20-page project report will be required at the end of the semester.


    There are two exams.
    Exam Date Location Time Weight Material
    Midterm March 18 In class 8:00 am - 9:15 am 20% Material covered up to March 6
    Final May 13 In class 9:10 am - 11:10 am 25% Comprehensive

    Last modified: April 2, 2003.

    Accesses since December 5, 2003 2:30pm