View Module

An error occurred while attempting to get the requested module. Cannot open database "AspNetForums" requested by the login. The login failed. Login failed for user 'swenet'. at AspNetForums.Data.SqlDataProvider.GetRatingForUser(String username, Int32 parentID) at AspNetForums.Ratings.GetRatingForUser(String username, Int32 parentID) at SwenetDev.ModuleRatingsControl.getRatingForUser(String username, ModuleRatingInfo ratingInfo) at SwenetDev.viewModule.Page_Load(Object sender, EventArgs e)

General Information

Title Variant of Introduction to Object-Oriented Design Patterns (DPAT1)
Version Info Version 1 , submitted by mmccracken on 5/4/2004 at 12:27 PM
View Revision History
Module Identifier mmccracken.2004.1
Abstract This module introduces the concept of design patterns as tools for organizing and evaluating designs of small subsystems of components. The focus is on patterns per se, with only a slight nod towards systems of patterns (or pattern languages). In our experience, it is only after students have seen the power of individual patterns that they are ready to advance to using multiple patterns synergistically.

The presentation is based primarily on the seminal work in this area, namely Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson, and Vlissides (often referred to as the Gang of Four book, or GOF).
Size Lecture: 2 hours
Exercise: 1-2 hours
Comments This module is designed for use with second and third year students in computer engineering, computer science, and software engineering.

SEEK Categories

  1. Design concepts (DES.con)
  2. Design strategies (DES.str)


  1. W. Michael McCracken


  1. Students should be competent programmers in an object-oriented language (e.g., Java, C++, Smalltalk, Python, Ruby).
  2. They should have a solid grasp on the notions of class, object and inheritance, and polymorphism.
  3. Students should also be familiar with design principles such as high cohesion, low coupling, separation of concerns, and information hiding.

Learning Objectives

  1. Knowledge - Describe the role that patterns play in software design.
  2. Knowledge - Define the three categories of patterns in Gamma, et. al.
  3. Comprehension - Describe the major sections of a GOF pattern description, and tell why each is important.
  4. Application - Use the adapter pattern in the context of a small system.


  1. What are design patterns?
  2. Where do patterns fit on the spectrum from general principles to specific concrete designs?
  3. How are patterns organized and catalogued?
  4. How are patterns described in a way that makes them useful?
  5. How can one apply a pattern in practice?


  1. Annotated lecture slides for introducing patterns (Powerpoint) 0.00/5 [Rate Material]

  2. Sample exercises (PDF) 0.00/5 [Rate Material]

  3. Sample assessment exercises (long version) (PDF) 0.00/5 [Rate Material]


See Also...

No alternate modules.

Other Resources

  1. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
  2. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M. Pattern-Oriented Software Architecture. John Wiley & Sons, 1996.
  3. Schmidt, D., Stal, M., Rohnert, H., Buschmann, F. Pattern-Oriented Software Architecture (Vol. 2). John Wiley & Sons, 2000.
  4. Grand, M. Patterns in Java. John Wiley & Sons, 1998.
  5. Shalloway, A., and Trott, J. Design Patterns Explained. Addison-Wesley, 2002.
  6. Hillside Patterns Group Home Page (Link)
  7. Design Patterns Wiki Web (Link)


Number of Ratings:   0

Log in to rate this module.


Discuss this module in the forums.

Related Modules