Whenever you're ready, walk me through how you'd approach this.
Describe various design patterns and when to apply them in a software project at McGill University.