This is an old version of this course, from Winter 2016-2017. A newer version is available 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 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. I will accept proposals before the deadline.
Here are some ideas
- Decorator in Python
- Abstract Factory
- Flyweight
- Builder (taken)
- State
- Mediator
- Memento
- Object Pool
- MVC (code example)
- More...
Code and UML (due in Lab, Week 9)
You should demo your code to me.
Demonstration support materials (Week 10, Tuesday, 11pm)
One member of your team should email me any materials you used to support your demonstration to the class. (e.g., a PowerPoint file, a worksheet, etc.)
Demonstration to 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.
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.
Final code and presentation submission
You will submit your final presentation
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.
45% of the project grade will be based on the coding example.
45% of the project grade will be based on the quality of instruction in the final presentation.
10% of a student's grade will be based on that student's assessment of the other projects.
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.
A presentation 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 the peer audience will receive a grade of AB. Presentations which contain errors of various kinds will receive a lower grade.
A student who provides exceptional assessment of the other presenations will receive an A on the presentation. A student who provides a reasonable assessment of the other students will receive an AB. A student who gives all teams the same numeric ratings and does not provide written feedback will receive a very low grade.
Up to 10% of the final will be on the material presented by your classmates on their final projects.