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.

CriterionWeightExcellent
Problem Diagnosis25%Finds meaningful design issues and explains impact.
Refactor Plan25%Provides safe, ordered steps with reasoning.
Improved Design30%Separates responsibilities and improves testability.
Explanation20%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?