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.
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.
This course is divided into three modules, each terminated by an exam:
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.
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.
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.
Grades will be maintained on the web using egradebook.
Homework | 12% |
Programming Assignments | 12% |
Project | 20% |
Exams | 56% |
Midterm 1 | Monday, October 12 |
Midterm 2 | Monday, November 16 |
Final Exam | Monday, December 21, 1200-1355 |