CENG 557
Advanced 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.
Course Objectives
To advance students on the current trends in software design patterns
Recommended or Required Reading
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.
Learning Outcomes
1. To be able to identify and explain design principles and patterns in software
2. To be able to apply design principles and patterns when developing software in teams
3. To be able to critically evaluate and report consequences of design patterns with respect to desired software qualities
4. To be able to analyze and report the relationship between design principles, design patterns, and programming language design, application frameworks, or application domains
| 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
Homework 20%
Research Presentation 40%
Final 40%
- CENG 500
- CENG 501
- CENG 502
- CENG 503
- CENG 504
- CENG 505
- CENG 506
- CENG 507
- CENG 508
- CENG 509
- CENG 511
- CENG 512
- CENG 513
- CENG 514
- CENG 515
- CENG 516
- CENG 517
- CENG 518
- CENG 521
- CENG 522
- CENG 523
- CENG 524
- CENG 525
- CENG 531
- CENG 532
- CENG 533
- CENG 534
- CENG 541
- CENG 542
- CENG 543
- CENG 544
- CENG 551
- CENG 552
- CENG 555
- CENG 556
- CENG 561
- CENG 562
- CENG 563
- CENG 564
- CENG 565
- CENG 566
- CENG 567
- CENG 568
- CENG 590
- CENG 608
- CENG 611
- CENG 612
- CENG 613
- CENG 631
- CENG 632
- CENG 641
- CENG 642
- CENG 643
- CENG 651
- CENG 661
- CENG 662
- CENG 663
