CSC 231 - Software Design and Patterns

Course Description

This course is an introduction to software design patterns. A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. Patterns are formalized best practices that the programmers should implement in the applications. The course covers the most common object- oriented software design patterns. For each pattern, it will discuss the underlying object-oriented design principle it is based on; the specific object-oriented design problem it solves; the context it can be applied and the consequences of applying it; how the different components of the pattern collaborate with each other; and etc.

Syllabus

Full text of the syllabus can be downloaded from here.

Lectures

1.Introduction
2.UML and Basic Patterns
3.The Strategy Pattern
4.The Observer Pattern
5.The Decorator Pattern
6.The Factory Method Pattern
7.The Abstract Factory Pattern
8.The Singleton Pattern
9.The Adapter Pattern
10.The Command Pattern
11.The Facade Pattern
12.The Template Method Pattern
13.The State Pattern (new)

Assignments

1.Sentence Generator
2.User Interface
3.SITE Robot
4.Coffee Wending Machine (updated)

Labs

Code samples provided here are neither guaranteed to be complete and nor to be fully functional. They mostly serve the purpose of showing the code structure for a specific pattern.
  1. The Observer Pattern
  2. The Decorator Pattern
  3. The Abstract Factory Pattern
  4. The Singleton Pattern
  5. The Command Pattern

Exams

Project

Literature

Resources

Other

Tools

Web Resources