SEDS 519
Software Design Patterns
This course focuses on advanced software design patterns. Primary topics include advanced object-oriented programming principles, object-oriented design patterns, patterns of enterprise application architecture, enterprise integration patterns, and patterns related to domain-driven design. Students will learn concepts of modern software development with design patterns and participate in development of a mid-size programming project working in teams.
Reference book(s):
- Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995.
- Patterns of Enterprise Application Architecture, Martin Fowler, Addison-Wesley, 2003.
- Enterprise Integration Patterns, Gregor Hohpe, Bobby Wolf, Addison-Wesley, 2011.
- Patterns, Principles, and Practices of Domain-Driven Design, Scott Millett, Nick Tune, John Wiley & Sons, 2015.
Course Objectives: To advance students on the current trends in software design patterns.
Week | Topics |
1 | Introduction to Object-Oriented Analysis and Design |
2 | Inheritance and Polymorphism with Abstract Classes and Interfaces |
3 | Object-Oriented Programming Principles |
4 | Architectural Design Pattern – Model View Controller |
5 | Observer Design Pattern |
6 | Creational Design Patterns |
7 | Structural Design Patterns |
8 | Behavioral Design Patterns |
9 | Introduction to Patterns of Enterprise Application Architecture |
10 | Object-Relational Design Patterns |
11 | Introduction to Enterprise Integration Patterns |
12 | Messaging Design Patterns |
13 | Introduction to Domain-Driven Design |
14 | Microservice Design Patterns |
Grading:
Final Exam %40
Midterm Exam %30
Project %30
Course Learning Outcomes:
CO1 – To be able to identify and explain design principles and patterns in software
CO2 – To be able to apply design principles and patterns when developing software in teams
CO3 – To be able to critically evaluate and report consequences of design patterns with respect to desired software qualities
CO4 – To be able to analyze and report the relationship between design principles, design patterns, and programming language design, application frameworks, or application domains
Contribution of Program Learning Outcomes:
PO1 | PO2 | PO3 | PO4 | PO5 | PO6 | PO7 | |
CO1 | 1 | ||||||
CO2 | 1 | 1 | 1 | 1 | |||
CO3 | 1 | 1 | 1 | 1 | 1 | ||
CO4 | 1 | 1 | 1 | 1 |
Justification of the course:
It is an elective course of the Software Engineering and Data Science Master of Science Program and it is one of the important Software Engineering elective courses. It provides the necessary background for state-of-the-art software development to be used in software engineering.
Overlapping with or complementing topics in courses:
This course follows Software Construction course.