Term 1, 2026
COMP2511
Software Design and Architecture
This course aims to introduce students to the foundational principles of designing software that is flexible, reusable and maintainable and explore the basics behind the architecture of software systems.
๐ Weekly Schedule
01
Introduction to Java & OOP
Course overview, introduction to Java, and the object-oriented paradigm
Feb 16 - 22
02
Inheritance & Design Principles
Inheritance, polymorphism, domain modelling, and design by contract
Feb 23 - Mar 1
03
Exceptions, Generics & Testing
Exceptions, generics and collections, JUnit testing, and software design principles
Mar 2 - 8
04
Design Patterns: Strategy, Composite, Factory
Refactoring, Strategy, Composite, and Factory patterns
Mar 9 - 15
05
Observer, Decorator & Functional Programming
Observer, Decorator, Singleton patterns, and functional programming paradigm
Mar 16 - 22