SE2811
Software Component Design

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 will research the pattern, develop an application illustrating that pattern, prepare a fifteen to twenty-minute introduction to that pattern for your fellow students, and write a report on your contributions.

While preparing your application, 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)

For your introduction to the rest of the class, you can choose to purely follow a traditional presentation format or to incorporate the rest of the class through in-class activities. I recommend 1-2 minute activities given the short time frame. The introduction should include your example application, and your fellow students must come away with a core understanding of how the pattern works, when it might be applicable, and what the consquences are (both good and bad). The presentation will result in questions on the final exam.

How you divide up the work is up to the team, but all must participate in a meaningful way. In particular, everyone must present and contribute to the implementation. A significant part of your grade will be based on a short report you write stating how you contributed to the application and introduction for your peers.

Proposal (due in Lab, Week 8)

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 pick a different pattern.

Here are some ideas

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

Code and UML (due in Lab, Week 9)

You should demo your code to me.

Class support materials (Week 10, Tuesday, 11pm)

One member of your team should email me any materials (or links to them) you used to support your introduction for your fellow students (e.g., a PowerPoint file, a worksheet, etc.)

Introduction for rest of class (in Lab, Week 10)

You will have 17 minutes to teach your peers as much as you can about the pattern. You do not have to follow a traditional lecture approach. Please bring your discussion of the pattern to a close between 14 and 17 minutes after you start.

Final code and introduction submission

You will submit your final presentation by 9am the morning after the presentations complete.

Grading Rubric

Each quarter, faculty receive a reminder of MSOE's grade definitions:

A Student has performed outstandingly in all regards and is clearly exceptional.
AB Student has performed with excellence.
B Student has shown very high command of course content.
BC Student has done a commendable job dealing with course content.
C Student has an adequate grasp of course content.
CD Student has met fair expectations.
D Student has attained minimal expectations in the course.
F Student has not attained minimal expectations in the course.

In light of these expectations, the rubric requirements for the final grade are as follows:

The project is worth two week's labs in the final grade.

50% of the project grade will be based on the example application.

50% of the project grade will be based on the quality of instruction in introduction to the rest of the class

A coding example that is clearly exceptional will receive a grade of A. A coding example that includes a real-world example (either an analogy to real-world items or a real coding example), that includes the proper relationship between the classes, that illustrates the pattern well, that runs correctly, and is otherwise free of errors will receive a grade of AB. Coding examples with errors will receive lower grades.

An introduction for your peers that is clearly exceptional will receive a grade of A. A presentation which clearly presents the pattern, includes clarifying references to code examples, and appropriately engages your peers will receive a grade of AB. Presentations which contain errors of various kinds will receive a lower grade.

Individual team member's grades will be adjusted based on their individual reports of how they contributed to the project. You will receive a report of this adjustment as part of your graded lab.

Up to 10% of the final will be on the material presented by your classmates on their final projects.

Submission Form for Dr. Yoder