Skip to main content

Semester 3: Software Design & Patterns

Year 1 - Fundamentals | Phase 3 | Weeks 32-37 | 6 weeks

This semester turns "I can write code" into "I can shape code under change." The focus is not pattern trivia. The focus is learning to diagnose design pressure, refactor safely, choose patterns only when they earn their cost, and explain design decisions clearly in review.


Semester Goal

By the end of this semester, you should be able to:

  • identify structural problems in medium-sized code without vague language
  • protect refactors with tests and smaller, reviewable steps
  • apply the core behavioral, structural, and creational patterns deliberately
  • review code with evidence and tradeoff reasoning instead of taste
  • produce design notes, ADRs, and PR summaries that another engineer can actually use

If you still reach for abstractions before you can name the change pressure, you are not done.


Prerequisites

Complete Semester 2 first. You should already be comfortable with:

  • writing and debugging non-trivial code
  • reading unfamiliar code without freezing on syntax
  • basic testing habits
  • complexity analysis and decomposition from the algorithms phase

Module Sequence

#ModuleWhy it matters
1OOD Foundations & Code SmellsLearn the vocabulary of cohesion, coupling, encapsulation, naming, and smell recognition
2Refactoring TechniquesLearn how to change code safely instead of performing risky rewrites
3Behavioral PatternsLearn how to model variation, actions, and notifications cleanly
4Structural & Creational PatternsLearn how to shape object construction, interfaces, and layered behavior
5Applied Design & Code ReviewLearn to integrate the semester into real review, documentation, and tradeoff decisions

How to Work This Semester

Use each module in the same order:

  1. Read the module index.md and follow the concept sequence.
  2. Complete the practice work before touching the quiz.
  3. Keep a running mistake log for smells misidentified, refactor steps skipped, and patterns misapplied.
  4. Add short design notes after every substantial exercise: what changed, why it changed, what pressure justified it, and what you deliberately did not abstract yet.
  5. Reuse one codebase across the semester when possible so the project work compounds instead of resetting every week.

Weekly Arc

WeekMain outcomePrimary module focus
32Diagnose design problems preciselyModule 1
33Refactor in safe, test-backed stepsModule 2
34Handle runtime variation and behavior compositionModule 3
35Control construction, wrapping, and adaptationModule 4
36Review code and write design rationaleModule 5
37Finish the project, cumulative review, checkpoint, and examSemester-level assessments

Core Deliverables

  • one running smell-and-refactor log with concrete examples from your own code
  • one pattern cookbook with short "when to use / when to avoid" notes
  • one plugin-style or extension-oriented application evolved across the semester
  • one set of code review notes using a rubric of correctness, clarity, design, and tests
  • one small ADR or design memo attached to the semester project

The semester is complete only when the artifacts show judgment, not just completion.


Completion Contract

Do not advance to Semester 4 unless all of the following are true:

  • you can point at a smell and name a likely refactor move without guessing
  • you can explain why a pattern is warranted in a specific piece of code
  • you can show tests or characterization checks that protected a non-trivial refactor
  • you can critique code in writing without relying on "cleaner" or "better design" as empty phrases
  • you can produce a project branch or commit history that shows deliberate, incremental design work

Semester Assessments

  • Semester Project: one integrated refactor, pattern, and reviewable-delivery project
  • Checkpoint Gate: readiness standard before moving into systems programming
  • Cumulative Review: interleaved review across Semesters 0-3
  • Semester Exam: closed-book reasoning on smells, refactors, patterns, and review judgment

Suggested Study Rhythm

  • 4 days per week on module concepts and practice
  • 1 day per week on project evolution
  • 1 day per week on review, spaced repetition, and design notes
  • 1 day per week on cumulative recall and cleanup of weak spots

Small, defensible steps matter more than marathon sessions. This semester rewards repeated contact with real code.


Capstone Throughline

Every semester must leave behind evidence that can survive into the final capstone defense.


Model Artifact Calibration

Use the refactor PR/writeup model artifact when preparing reviewable design-change evidence.


Enrichment Pages

Portfolio Artifact | Common Failure Modes | Bridge Review