1 · 200 Level 2 · First Semester 3 · CSC203 4 · Details
Core200 LevelFirst SemesterSoftware Engineering
CSC203

Object-Oriented Software Design

Course Description

Object-Oriented Software Design teaches students to organize larger programs around the responsibilities and relationships between the things a program models, rather than a single long sequence of instructions. The course pairs core object-oriented concepts with design principles that keep a growing codebase manageable.

Learning Outcomes
  • Model a problem domain using classes, objects, and their relationships.
  • Apply encapsulation, inheritance, and polymorphism appropriately, not automatically.
  • Recognize and apply a small set of foundational design patterns.
  • Refactor a working but poorly structured program toward clearer design.
Weekly Topics
Examines objects & classes from a practical angle, using a case drawn from real systems to motivate the concepts.
Builds directly on the previous week to extend encapsulation, with an emphasis on where the earlier techniques stop working.
Combines a short lecture on inheritance with an in-class exercise students carry into the week's assignment.
Focuses on common mistakes and misconceptions around polymorphism, using student work from the previous assignment as material.
Introduces interfaces & abstract classes and immediately puts it to use in a small design or implementation task.
Situates composition vs inheritance within the broader arc of the course, showing how it connects to what comes next.
Uses a guest dataset or scenario to explore mid-semester review in a setting closer to professional practice.
Introduces design principles (solid) through short lectures and worked examples, building the vocabulary the rest of the course relies on.
Works through common design patterns i in a lab-driven session, with guided exercises students complete and discuss in small groups.
Covers common design patterns ii in depth, connecting the underlying theory to a concrete example the class builds together.
Examines refactoring practice from a practical angle, using a case drawn from real systems to motivate the concepts.
Builds directly on the previous week to extend design project, with an emphasis on where the earlier techniques stop working.
Combines a short lecture on revision with an in-class exercise students carry into the week's assignment.
Assessment
Assignments — 20%
Practical Work — 30%
Mid-Semester — 15%
Final Examination — 35%
Prerequisite Map
CSC102 Programming Fundamentals CSC203 Object-Oriented Software Design CSC208 Web Application Development CSC301 Software Engineering Principles CSC307 Human-Computer Interaction
Related Courses