CS 5741 Syllabus - Object-Oriented Design

Fall 2009

CS 5741 Course Description

CS 5741 Course Outcomes

Learning Materials

You have the option of procuring either the book or CD version of the Design Patterns text.

The following books will be used as references for web tools. UMD students can access them through Safari Tech Books Online.

Course Objectives

Object-oriented methodology is widely accepted as the best methodology for tackling a wide range of software design problems. From its early days, reusability has been one of its most important promises of this methodology. Some of its early proponents expressed the view that just using this methodology would result in a factor of ten improvement in software productivity.

Reality has clearly demonstrated that this improvement may be possible, but not without a substantial change in the way we approach design problems. It is far from being just a simple matter of classifying the kinds of objects that are needed in the software and setting up an appropriate class heirarchy.

The primary objective of this course is to examine some of the more complex issues that arise in object-oriented design and some possible solutions. Few of the solutions are best for all circumstances. This implies the need for examining conditions determining the appropriate use of these solutions. For some of the more complex solutions, we will also need to examine how a solution can be adapted to meet problem specific needs.

While studying design patterns, we will also look at object-oriented principles - encapsulation, inheritance, polymorphism, classes, and types to see how they relate to design patterns. We will also look at object-oriented technology in the web. This will provide some examples of design patterns and also introduce object-oriented languages that are substantially different from C++ and Java.

Course Organization

This course is divided into three modules, each terminated by an exam:

Design Patterns and Object-Oriented Principles

Design patterns are patterns for organizing a small set of classes to meet needs that arise frequently. A good presentation of a design pattern discusses the considerations involved in recognizing the need for the pattern, adapting it into a specific software context, and selecting among its variations.

Design patterns use the object-oriented principles - encapsulation, inheritance, and polymorphism - in different ways. Along the way we will look at these principles in greater depth.

Your understanding of these topics will be tested in the first midterm exam.

Object-Oriented Web Technology

Modern web technology has several good examples of design patterns. For example, the structure of a web page is an example of the Composite design pattern. In advanced web design, this structure is often accessed through the JavaScript programming language. This language will be described, providing an example of a prototype- based, classless language.

Your understanding of these topics will be tested in the second midterm exam.

Project and Advanced Design Patterns

You will start work on a class project shortly after the second midterm exam. The class project will give you an opportunity to apply lessons that you have learned about object-oriented design. While you are working on the project, more advanced design patterns and object-oriented topics will be presented in lecture.

Your understanding of these patterns and topics will be tested in the final exam. The final exam will also cover some review material from topics covered by the midterm exams.

Grading Basis

Grades will be maintained on the web using egradebook.

Homework 12%
Programming Assignments 12%
Project 20%
Exams 56%

Important Dates

Midterm 1 Monday, October 12
Midterm 2 Monday, November 16
Final Exam Monday, December 21, 1200-1355

CS 5741 Policies