Software Design and Architecture Patterns
Instructor: Raman Ramsin | Certificate: Official (bilingual) |
Term: Summer 2025 | Prerequisite: Object-Oriented Programming |
Schedule: Sunday and Tuesday 17:30-19:00 | Online Class: Online Class |
General Objective
The objective of this course is to familiarize students with patterns and their applications in software engineering. While learning about common design and architectural patterns, students will also become familiar with anti-patterns. Due to the multitude of patterns, the course emphasizes detailed introduction of widely-used patterns while ensuring sufficient familiarity with foundational structures, basic principles, complexity management methods, and pattern analysis techniques.
Topics
- Introduction: Fundamentals and History (1 session)
- Design Patterns (8 sessions)
- Creational Patterns
- Structural Patterns
- Behavioral Patterns
- Object-Oriented Principles in the Context of Patterns (2 sessions)
- SOLID Principles
- GRASP Patterns
- Design by Contract
- Architectural Patterns (5 sessions)
- Anti-Patterns (2 sessions)
Assessment
- Assignments: 6 points
- Final Exam: 14 points
References
- E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
- E. Freeman, E. Robson. Head First Design Patterns. 2nd ed. O'Reilly Media, 2020.
- F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture: A System of Patterns. Vol. 1. Wiley, 1996.
- M. Richards, Software Architecture Patterns, 2nd ed. O'Reilly Media, 2022.
- C.J. Neill, P.A. Laplante, J.F. DeFranco. Antipatterns: Managing Software Organizations and People. 2nd ed. CRC Press, 2012.