Instructor Guide
Teaching Notes and Rubrics
This page helps an instructor or self-study mentor run the course without needing extra framework files.
Teaching Approach
Teach this course as a design studio, not only a lecture course. Students should repeatedly inspect bad designs, propose alternatives, explain tradeoffs, and refactor in small steps. Encourage them to say why a design is better, not just that it uses a famous principle.
Use short code examples in class and longer labs outside class. The most valuable classroom moments are design reviews where students compare two designs and identify what each one makes easier or harder.
Weekly Rhythm
- Start with one design problem or messy code sample.
- Introduce the principle or pattern.
- Walk through a worked example.
- Have students diagnose a new example in pairs.
- End with a short reflection question.
Grading Priorities
- Clarity of responsibility.
- Evidence of design reasoning.
- Appropriate simplicity.
- Ability to discuss tradeoffs.
- Improvement through feedback.
Midterm Design Review
Give students a small but poorly designed project. They should identify design smells, write a refactor plan, improve at least part of the code, and explain which principles were involved.
| Criterion | Weight | Excellent |
|---|---|---|
| Problem Diagnosis | 25% | Finds meaningful design issues and explains impact. |
| Refactor Plan | 25% | Provides safe, ordered steps with reasoning. |
| Improved Design | 30% | Separates responsibilities and improves testability. |
| Explanation | 20% | Connects changes to principles and tradeoffs. |
Capstone Review Questions
- What requirement most shaped your design?
- Which part of the system is easiest to change?
- Which part is hardest to change?
- Where did you use abstraction and why?
- Which design pattern did you use, and what problem did it solve?
- What did testing reveal about your design?
- What technical debt did you knowingly accept?
- What would you change with two more weeks?