Skip to content
Computer Science · Grade 12

Active learning ideas

Software Design Principles

Students remember software design principles when they apply them actively rather than study abstract definitions. These concepts transform from theory to tools when students refactor messy code, analyze dependencies, and build modular systems with their own hands. Active learning turns confusion about cohesion and coupling into clear choices they can defend.

Ontario Curriculum ExpectationsCS.SE.8CS.P.24
35–60 minPairs → Whole Class4 activities

Activity 01

Concept Mapping35 min · Pairs

Pairs Refactor: Cohesion Challenge

Give pairs a code snippet with mixed responsibilities, like a class handling both data storage and user interface. They identify issues, separate functions into cohesive modules, and test the refactored version. Pairs then swap with another duo for feedback.

Explain how modularity and abstraction contribute to robust software design.

Facilitation TipDuring Pairs Refactor: Cohesion Challenge, circulate and ask each pair to verbalize one rule they applied while splitting their class into smaller, focused components.

What to look forPresent students with two short code snippets, one demonstrating high cohesion and low coupling, the other demonstrating the opposite. Ask students to identify which snippet is better designed and provide one specific reason, referencing cohesion or coupling.

UnderstandAnalyzeCreateSelf-AwarenessSelf-Management
Generate Complete Lesson

Activity 02

Concept Mapping45 min · Small Groups

Small Groups: Coupling Hunt

Distribute code examples with varying coupling levels to small groups. Groups diagram dependencies, propose decoupling via interfaces or events, and rewrite one snippet. Groups share strategies in a class debrief.

Differentiate between high cohesion and low coupling in software modules.

Facilitation TipFor Small Groups: Coupling Hunt, provide a printed class diagram so groups can physically circle and untangle dependencies with colored markers.

What to look forFacilitate a class discussion using the prompt: 'Imagine you are building a system to manage a library. How would you use modularity and abstraction to design the core components, such as cataloging books and managing user accounts? What are potential pitfalls if these modules become too tightly coupled?'

UnderstandAnalyzeCreateSelf-AwarenessSelf-Management
Generate Complete Lesson

Activity 03

Concept Mapping60 min · Whole Class

Whole Class: Modular App Build

Assign class roles to build a simple inventory app modularly: one team on data module, another on UI, others on business logic. Teams integrate via defined interfaces, then demo the full system.

Design a class structure for a simple application, applying object-oriented design principles.

Facilitation TipIn Whole Class: Modular App Build, assign rotating roles like ‘interface designer’ and ‘implementation reviewer’ to keep all students engaged in the construction process.

What to look forAssign students to design a simple class structure for a 'Smart Home Device' application. After they complete their initial design, have them swap with a partner. Each student reviews their partner's design, looking for opportunities to improve cohesion or reduce coupling, and provides one specific suggestion for refactoring.

UnderstandAnalyzeCreateSelf-AwarenessSelf-Management
Generate Complete Lesson

Activity 04

Concept Mapping50 min · Individual

Individual: Pattern Application

Students pick a design pattern like Observer, sketch a class diagram for a chat app scenario, implement core code, and note cohesion and coupling benefits. Submit with a short rationale.

Explain how modularity and abstraction contribute to robust software design.

Facilitation TipFor Individual: Pattern Application, supply a checklist of pattern characteristics so students self-assess before submitting their final code.

What to look forPresent students with two short code snippets, one demonstrating high cohesion and low coupling, the other demonstrating the opposite. Ask students to identify which snippet is better designed and provide one specific reason, referencing cohesion or coupling.

UnderstandAnalyzeCreateSelf-AwarenessSelf-Management
Generate Complete Lesson

A few notes on teaching this unit

Teach these principles through cycles of broken code, guided fixes, and reflection rather than lectures. Start with a flawed example students immediately recognize as hard to maintain, then model refactoring step-by-step while naming each principle aloud. Avoid overwhelming beginners with too many patterns at once; focus on one or two patterns per unit and connect them to cohesion and coupling concepts. Research shows students grasp abstraction best when they experience complexity firsthand before simplifying it into clear interfaces.

Students will confidently identify high-cohesion and low-coupling structures in code, explain why modularity matters, and adapt design patterns to solve real problems. They will discuss trade-offs with peers and justify their design decisions using clear terminology. Successful learners will also spot and fix common anti-patterns in sample code.


Watch Out for These Misconceptions

  • During Pairs Refactor: Cohesion Challenge, watch for students combining unrelated methods into one ‘all-purpose’ class.

    Circulate and ask each pair to defend the grouping of methods in their class; if they struggle, prompt them to consider the single responsibility principle and suggest splitting the class into smaller, role-specific modules.

  • During Small Groups: Coupling Hunt, watch for students equating low coupling with zero interactions between modules.

    Ask groups to map dependencies on paper and highlight which connections are necessary; guide them to convert direct method calls into interfaces or events to reduce tight coupling.

  • During Individual: Pattern Application, watch for students applying patterns rigidly without adapting to context.

    Require students to include a short justification note with each pattern, explaining why it fits the problem and how it improves cohesion or reduces coupling in their specific scenario.


Methods used in this brief