This course introduces concepts of software design patterns and architecture. The course covers principles of reuseable object-oriented programming, as well as creational, structural, and behavioural patterns. The course also covers software quality attributes, architectural tactics and patterns, designing and documenting software architecture, architecture reconstruction, architecture evaluation, and software product lines. Students will practice applying and implementing design patterns and software architecture design and evaluation in course work by developing various software systems.
Prerequisite: CS 2043 or permission from the instructor.