Syllabus

14-Week Course Plan

A complete college-level path from requirements and modularity to SOLID, patterns, testing, architecture, refactoring, and final design review.

Assessment Breakdown

CategoryWeightDescription
Weekly Labs20%Hands-on design and refactoring practice.
Design Assignments20%Written and coded design deliverables.
Quizzes10%Short checks for core concepts.
Midterm Design Review15%Analyze and refactor a poorly designed system.
Final Project25%Capstone software design project.
Participation / Reviews10%Peer reviews and design discussion.

Weekly Schedule

WeekTopicFocusLabAssignment
Week 1What Software Design Really MeansDesign is the structure that lets working code survive change.Bad Code DiagnosisPick an app you use often. Write 600–900 words explaining its likely modules, likely data, and three design choices the developers probably had to make.
Week 2Requirements, Constraints, and Acceptance CriteriaYou cannot design well until you understand the problem well.Requirement RecoveryCreate a requirements document for a library system, inventory system, or student planner. Include at least 15 requirements and 8 acceptance criteria.
Week 3Decomposition, Modularity, Cohesion, and CouplingLarge systems become manageable when responsibilities are separated cleanly.Modular Refactor PlanDesign a module breakdown for your capstone idea. Include at least six modules/classes and describe how they communicate.
Week 4Object-Oriented Design That Does Not Fight YouClasses should protect rules, express concepts, and collaborate cleanly.Domain Modeling with ObjectsDesign a mini game object model with Player, Enemy, Weapon, Ability, and Level. Use composition for at least one behavior.
Week 5SOLID Part 1: SRP, OCP, and LSPThe first three SOLID principles help you avoid classes that break when requirements change.SOLID Refactor: ReportsRefactor a payment, shipping, grading, or enemy-behavior example to use SRP and OCP. Include before/after code.
Week 6SOLID Part 2: Interfaces, Dependency Inversion, and TestabilityDesign improves when high-level rules stop depending directly on low-level details.Notification System DesignCreate a small service that depends on at least two abstractions. Explain which details are hidden behind those abstractions and why.
Week 7DRY, KISS, YAGNI, and NamingSimple design is not lazy design. It is disciplined design.Clarity RefactorTake a small program you wrote before. Rename at least ten items and remove or simplify one unnecessary abstraction. Submit a reflection.
Week 8UML and Practical Design DiagramsA useful diagram explains one idea clearly.Diagram a WorkflowCreate two diagrams for your capstone: one class/module diagram and one sequence diagram for the most important workflow.
Week 9Design Patterns Part 1: Strategy, Factory, Observer, SingletonPatterns are tools for recurring design problems, not decorations.Pattern Choice LabImplement Strategy, Factory, or Observer in a small example. Include a paragraph explaining what problem the pattern solves.
Week 10Design Patterns Part 2: Adapter, Decorator, Command, Repository, MVC/MVVMSome patterns help connect systems, extend behavior, and separate application layers.Repository and UI SeparationBuild a small app screen using a service and repository. The UI should not directly own business rules.
Week 11Testing and Testable DesignIf important behavior is hard to test, the design is probably telling you something.Make It TestableWrite at least five tests for your capstone. Explain one design change you made because testing exposed a problem.
Week 12Software Architecture BasicsArchitecture is the system’s big shape and its most important boundaries.Architecture SketchCreate an architecture diagram for your capstone and explain why you chose that structure.
Week 13Refactoring, Code Smells, and Technical DebtImprove design without changing external behavior.Refactor SafelyWrite a refactoring plan for your capstone. Include what you would fix first and why.
Week 14Final Design Review and Professional PresentationA designer must explain not only what was built, but why it was built that way.Final Design ReviewSubmit final project code, README, diagrams, tests, and design reflection. Prepare a 7–10 minute presentation.

Principles Reference

Short NameFull NameMeaning
SRPSingle Responsibility PrincipleA module, class, or function should have one main reason to change.
OCPOpen/Closed PrincipleSoftware entities should be open for extension but closed for constant modification.
LSPLiskov Substitution PrincipleA subtype should be usable anywhere its base type is expected without surprising behavior.
ISPInterface Segregation PrincipleClients should not be forced to depend on behavior they do not use.
DIPDependency Inversion PrincipleHigh-level policy should depend on abstractions, not low-level details.
DRYDon't Repeat YourselfAvoid duplicated knowledge, rules, and behavior.
KISSKeep It SimplePrefer the simplest design that solves the real problem clearly.
YAGNIYou Aren't Gonna Need ItDo not build features or abstractions before they are needed.
CohesionHigh CohesionKeep related behavior together so each module has a clear purpose.
CouplingLow CouplingReduce unnecessary dependency between modules so changes stay localized.