Course Syllabus – Principles of Distributed Software System Design (4010-442)

Fall – 20121

Revised: 08/24/12

 

Catalog description

Issues and structures common in the construction of distributed software systems. Emphasis is on fundamentals found in systems of this type. Topics include remote object invocation, middleware technologies, and common architectural and design patterns. Quality factors will be discussed, including responsiveness, throughput, and extensibility.  Team project and significant laboratory work is required. 

Prerequisite: 4010-362.

 

Overarching Course Goals

At the completion of this course students will be able to

·                     List the non-functional requirements related with the specification of a distributed system

·                     Define the types of transparencies, with respect to the final user and with respect to the developer, desirables to attain when using or developing a distributed system

·                     List the steps to follow to develop a distributed system using an object oriented middleware

·                     List the problems related with heterogeneity (programming languages, platforms, etc.) in the development of a distributed application.

·                     List the problems related with security in the development of a distributed application.

·                     Describe how a middleware relates to the ISO/OSI reference model

·                     Explain why a middleware is built upon the transport layer

·                     Explain how a middleware implements the session and presentation layer

·                     Identify and indicate how Corba and Java/RMI achieve the implementations of the session and presentation layers

·                     Compare the different object oriented middleware: Corba and Java/RMI

·                     Experiment with technology to develop component-based distributed applications

·                     Design component-based distributed applications using established design patterns

·                     Formulate how the non-functional requirements related with distribution are taken into account in the application

 

 

Topics covered

·         Basic Networking: Sockets

·         Principles of Object-Oriented Middleware

·         Distributed Systems Design Patterns

·         Java/RMI

·         CORBA (overview)           

·         Resolving Heterogeneity

·         Locating Distributed Objects

·         Life Cycle of Distributed Objects

·         Distributed Object Transactions

·         Security

 

Topics NOT Covered

·         Web applications, Web application frameworks (J2EE, .Net)

·         Service Oriented Architecture (SOA), Web services

·         In depth networking protocols, routing algorithms, naming, etc.

·         Databases – distributed or otherwise

·         Distributed operating systems

·         Distributed file systems

·         Concurrency at the threading/process level (locks/semaphores/deadlocks)

 

Course Format

Classroom Activities - During class time you will be working in small groups or paired with other students. Most submitted activities will be graded based on participation only, but will be a worthwhile exam prep activity.

Projects - There will be two team projects assigned during the quarter. Details on the content of the project, expected deliverables and assessment will be provided with the description of each project.

Homework/Reading - Homework and reading will be assigned on a weekly basis. These assignments will supplement and reinforce project and classroom activities.

Exams – There will be two mid-term exams during Weeks 5 and 8. A final exam will be given during Week 11.

 

Grading

20% - Exam #1 (Week 5)

20% - Exam #2 (Week 8)

10% - Unit Assignments (3)

10% - Project 1

20% - Project 2

20% - Final Exam (Week 11)

 

Required Text Books

 Distributed Systems – Concepts and Design (5th Edition), Coulouris, Dollimore and Kindberg

 

Recommended Books

Design Patterns, GoF

Pattern-Oriented Software Architecture (Volume 4) – A Pattern Language for Distributed Computing, Buschmann, Henney & Schmidt (available on Books 24x7)

Designing Concurrent, Distributed and Real-Time Applications with UML, Hassan Gomaa

UML Distilled, Fowler & Scott (available on Books 24x7, or similar UML reference source)