Software Patterns -- IAP'97


How concisely can you describe your last software design? Design patterns are a new way to think about and communicate software architectures. Learn to see the "big picture" in a complex design, like a language interpreter or graphics library, and evaluate alternative designs. Learn how "frameworks" and "object models" exploit patterns to help simplify programs, and about the current obstacles for these technologies.


This course assumes fluency in object-oriented programming. It also helps to be able to think at a design level rather than a code level. This is the instinct to know what can be implemented without actually implementing it. This course will help develop that instinct to some extent.


Jan 7-Jan 30 TR11 Room 1-390

Software Patterns

1/7 Introduction to Patterns
(alternative introduction)
Observer pattern
1/9 Python
Chain of Responsibility pattern
1/14 Inventor
Interpreter pattern
1/16 ImageVision
Streams pattern
Decorator pattern
Strategy pattern

Object Models

1/21 Distributed Objects
Proxy pattern
Adaptor pattern
1/23 OpenDoc/ActiveX


1/28 ET++ case study (pattern review)
1/30 ET++ case study (new patterns)
Command pattern
Atomizer pattern

Miscellaneous notes

Designers who are unable or unwilling to learn the basic object-oriented patterns simply should not be doing object-oriented design.
Marshall Cline, author of the C++ and CORBA FAQs

Thomas Minka
Last modified: Fri Sep 02 15:28:47 GMT 2005