CS 240 Homework 5 - Pattern Presentation
Due week of Nov 03 (in class)
Overview
For this assignment, you will be briefly presenting a classical Object Oriented Design Pattern to the class. You will explain how the pattern works, when to use it, and give a simple (toy) example.
This presentation will be given in pairs; each student pair will present a single design pattern. Details on partners and assigned design patterns can be found below:
Presenters | Design Pattern |
Mon, Nov 03 | |
Daniel & Beth | Factory |
Joshua & Eric | Decorator |
Andrew & Evan | Composite |
Zach E. & Aidan | Iterator |
Wed, Nov 05 | |
Anna & Gaby | Visitor |
Sarah & Schyler | Singleton |
Damon & Jacob | Proxy |
Adam R. & Judd | Adaptor |
Fri, Nov 07 | |
Jon & Chili | Facade |
Imanuel, Zach C. | Mediator |
Adam M. & Kaylene | Observer |
Casey & Luke | Command |
Objectives
- To learn about object-oriented design patterns
- To practice giving a formal presentation on a technical topic
Assignment Details
This assignment should be relatively straightforward: the primary goal is to give you a chance to practice giving a presentation---ideally to get some feedback and experience before your final project presentation at the end of the semester.
Nevertheless, a few guiding notes are below:
- The first thing you should do is check in with your partner: find an hour or two to work together on this assignment. You are welcome to collaborate over video chat or email if that is easier--but make sure you coordinate together!
-
You'll then need to research your assigned design pattern.
- I've found the descriptions at sourcemaking.com to be quite readable.
- You can also find descriptions on Wikipedia.
- You might check out a copy of the Gang of Four's original text "Design Patterns: Elements of Reusable Object-Oriented Software". I have put a copy on reserve at the library.
- Our textbook also contains some explanations and examples of design patterns--and particularly how they are used in Rails applications!
- Finally, you can (and should!) check other resources as well. If you find something good, you might even share it on Piazza for other students to take advantage of as well!
- Important note! if you're struggling with understanding the pattern, please let me know and we can go over it!
-
Prepare a presentation that teaches this design to the rest of the class. Your presentation should cover the folowing elements (not necessarily in this order):
- A (usable) definition of the design pattern. A class diagram might be useful as well.
-
An explanation of the "problem" that the pattern is solving. Why do we use this pattern?
- You should also consider how it may differ from other patterns of a related type!
- An explanation of how the pattern works to solve the problem. How do we use this pattern?
- An explanation of when it is appropriate to use the design pattern When do we use this pattern?
-
A simple demonstration of the pattern. This can be a "toy" example: a few classes (in Java or Ruby) that show the pattern doing its stuff.
- Concrete examples are useful!
- Don't worry about running the code; we likely won't have much of a test environment for you.
- You should also be prepared to answer questions about your design pattern!
Logistics:
- You will give your presentation on your assigned day (during class the week of Nov 03)
- Your presentation should be ~8 minutes long (I will cut you off if you go over, so that we have time for everyone). Each partners are required to speak/demo for at least 3 minutes.
-
You should make up some form of slides/media ahead of time (particularly to show off code). This will help produce documentation (yay!), and the visual examples are helpful for many students. Make sure these are available online or otherwise are quickly accessible.
- Media presentations will be given from the room's installed computer to keep context switching time down.
- Finally: you will be asked to briefly give feedback to another group (the group that presents after you). You will be asked to report back one thing they did well in their presentation and one thing they could improve for the final project presentation. Remember to be respectful and supportive--the goal is to make sure that everyone gives as effective a presentation as possible!
Grading
This assignment will be graded out of 26 points:
- Content and Organization
- [2pt] Organized, with strong introduction and conclusion (do not dribble off)
- [2pt] Clear explanation of the motivation for the design pattern
- [2pt] Well-articulated definition of the design pattern
- [2pt] Clear explanation of the design pattern's use
- [2pt] Quality analysis of the design pattern's appropriateness
- [2pt] Easy-to-follow example code demonstrating the design pattern
- Presentation
- [2pt] Appropriate use of time (8-10 mins max)
- [2pt] Engages with the audience (verbally and non-verbally)
- [2pt] Clear, readable visual aids
- [2pt] Eye contact with the audience (do not read your slides!)
- [2pt] Clear diction: speak slowly and loud enough to hear, and avoid "ums" or other distractors (do better than the professor!)
- [2pt] Able to respond to questions
- [2pt] Provided appropriate feedback to other groups (you will not be graded on the feedback received from others)
(Note that the quality of the presentation is just as important as the content--the goal is to practice giving an engaging presentation)