SE2811
Software Component Design

This is an old version of this course, from Winter 2014-2015. A newer version is avaliable here.

Outcomes

  • Research material not covered in class
  • Orally (and graphically?) present findings to peers
  • Learn from peers
  • Learn a variety of patterns
  • Possibly learn how patterns are used in a variety of languages

Introduction

In this project worked in teams of three, you will explore patterns not covered in class and convey what you learned to the rest of the class

You should work a code example of the pattern you are demonstrating. You may find it helpful to start from one of the lab projects we have already worked in class this quarter (or, if you are investigating a pattern in Python, in the network protocols class last quarter)

Proposal (due in Lab, Week 9)

On a sheet of paper, write the standard header info (names, date, ...) and one sentence describing the pattern your team wishes to implement (and, if not in Java, what language you will use.)

Proposals will be accepted on a first-come first-serve basis. If another team has already proposed to do a pattern, I will ask you to scratch out your sentence on your proposal and write another one with a new pattern. I will accept proposals before the deadline.

Here are some ideas

  • Decorator in Python
  • Proxy
  • Facade
  • Adapter
  • Abstract Factory
  • Flyweight
  • Builder
  • State
  • Mediator
  • Memento
  • Object Pool
  • MVC (code example)
  • More...

Code and UML (due Tuesday of Week 10, 11pm)

You should submit to this website (below) your source code in a zip file. As in previous labs, each team member should mark the parts of the code they worked on with @author tags. You should also submit a UML diagram with pattern stereotypes for the pattern you are demonstrating.

Demonstration to class (in Lab, Week 10)

You will have 15 minutes to teach your peers as much as you can about the pattern. You do not have to follow a traditional lecture approach.

Each student will be required to assess the other teams using a simple form. In particular, you will be asked how much the team facilitated your learning of the pattern.

Please put all your source code in a package with your usernames and zip this. For example, if your teammembers are Phileas Fogg and Jean Passepartout, when your zip file is unzipped, it should produce the folder foogp_passepartoutj, which is a top-level Java package.

Submission Form for Dr. Yoder