I am teaching a course in object design patterns for the first time, and it is not a topic I am extremely well versed in. My students are well aware of this, and signed up for the course fully knowing that I would be exploring alongside them. They are pretty enthusiastic to learn together, particularly since software engineering is an extremely rare topic for high schools. They have all completed AP Computer Science A, meaning that they are familiar with object basics, polymorphism, etc.
I heard from a friend whose graduate degree is in SE that her professor had assigned student presentations about design patterns, and it seems like a good idea to me. I would like to assign groups to each learn about, and present, one pattern to the class. My current thought is to ask the students to structure their lessons thusly:
- A description of the pattern itself (what is it?). Have students already seen it? (Such as factory pattern with iterators)
- A working toy example of the pattern c#/unity (our platform for the course) to be share with their classmates
- A uml diagram of the toy example
- A uml diagram of the pattern in general (can be taken straight from the web)
- Lead a discussion about when the pattern would be appropriate
- Any other considerations that seem appropriate or important about the pattern
- A small review quiz to be shared with the class (as learning reinforcement)
I will model what I expect with two object patterns myself first (I was thinking about presenting singleton and observer patterns, though I am open to other suggestions if there are better choices), then allow them time to work in their own patterns.
I figure that each group will have roughly 40 minutes to present, and 10 minutes out of a 50 minute period the next day for their reinforcement quiz.
Here are my questions:
Does this seem reasonable given the topic? Are there elements that I am missing that are specific to design patterns? Should I allow students to freely pick from the design patterns, or should I restrict them to easier ones? Is there anything else I should know before embarking on this path with my students?