Design Patterns/Principles Research and Teaching

As a small group, research your assigned design pattern (see the list below) and prepare a PioneerWeb forum post to teach your fellow students about the pattern.

Required Reading

You should read the section of Fox & Patterson’s SaaS or Olsen’s Design Patterns in Ruby that covers your assigned design principle or design pattern (your instructor will inform you of your assignment).  The morning section will be assigned one of the Design Patterns described by the Gang of Four and documented in Olsen.  The afternoon section will be assigned one of the design principles given in Fox & Patterson’s Engineering Software as a Service.  

It is highly recommended that you read and comment on posts written by groups in BOTH sections.

What You Need to Do

Write a tutorial that gives::

  1. An explanation of the programming problem or situation that the principle is intended to solve.
  2. A description of the typical “bad” solution to the problem. How do novice developers MIS-apply the design principle?
  3. An explanation of the approach the principle uses to solve the problem (or address the situation).
  4. A code sample in an object-oriented language that illustrates the pattern (Ruby is recommended, but you may use Java or C++ or other language if you prefer). Do you find this design pattern used in your team project … or do you think it might be applicable? What other situations have you encountered where this pattern could apply?

Due to our distance learning situation, you will post your tutorial to the PioneerWeb discussion board for this assignment. You should then also read the other groups’ posts and write at least two substantive questions or comments and respond as a group to questions posted to your tutorial.  Your group should post the initial tutorial by 4/6, then, each student should read and respond to at least two other groups by 4/8, and finally, your group should respond to those responses by 4/10.  

What is a substantive question or comment post?  See these guidelines for the types of posts that you should try to write, especially when responding to other students’ posts.  

This assignment is one that can become very time-consuming, which is NOT our goal.  The original plan was to have you spend a class period (about 2 hours) in creating your tutorial.  Please limit the amount of time you spend on this online activity, divide up the research and writing as much as possible.  You should probably create your tutorial as a group in something like Google Docs and then have one team member post the group’s submission.

Group Assignments

Morning Section Design Patterns

  • Factory: MICA Food Pantry
  • Proxy: Mayflower Directory
  • Template Method: Invisible Closet
  • Observer: CoSI team

Afternoon Section Design Principles

  • Open/Closed Principle (SaaS 11.4):  Giving Gardens
  • Liskov Substitution Principle (SaaS 11.5):  Mayflower Dining
  • Dependency Injection Principle (SaaS 11.6):  Oral History
  • Demeter Principle (SaaS 11.7):  Assessment

Rubric (10 Points)

2 points: An explanation of the programming problem or situation that the principle/pattern is intended to solve.

2 points: A description of the typical “bad” solution to the problem. How do novice developers MIS-apply the design principle/pattern?

2 points: An explanation of the approach the principle uses to solve the problem (or address the situation).

1 point: A code sample in an object-oriented language that illustrates the pattern/principle

2 points: Individual response to two other group posts (2)

1 point: Group answers questions posted regarding their tutorial

css.php
The views and opinions expressed on individual web pages are strictly those of their authors and are not official statements of Grinnell College. Copyright Statement.