Software Design (CSE 564) at ASU

I taught  Software Design (CSE 564) at Arizona State University for three years  – Fall 2022, Spring 2021, and Fall 2020. This is a graduate-level course for students in Computer Science and Software Engineering programs.

This course: (a) examines software design issues and techniques; (b) presents a comparison of design methods and a survey of design representations; (c) reviews how to apply design principles, patterns, and architectures to create reusable and flexible software systems; and, (d) describes how to document the design and architecture of a software system using a visual notation.


Arizona State University.
School of Computing and Augmented Intelligence.
version Fall 2022


This course includes 26 lectures as follows (lecture slides available):

  1. Course Presentation
  2. Introduction
  3. Stepwise Refinement
  4. Modularization
  5. Assignment 01 Review
  6. Large vs. Small
  7. Object-Oriented Design
  8. Design Patterns
  9. Design Patterns – Observer
  10. Assignment 02
  11. Assignment 02 Review
  12. Design Patterns – Singleton
  13. Design Patterns – Decorator
  14. Design Patterns – Builder vs. Factory
  15. Assignment 03
  16. Midterm Review
  17. Design Patterns – Composite, Bridge, Strategy, and Chain of Responsibility
  18. Architectures and Frameworks
  19. Connecting the Dots
  20. Reviewing the Dots
  21. Architecture Patterns I
  22. Architecture Patterns II
  23. Architecture Patterns III
  24. Design Smells
  25. Model-Driven Development
  26. Model-Driven Development II


Some lectures have been recorded and are available on my YouTube Channel.

GitHub Repository

I will share some projects done in this course over the years on my GitHub Repository. This is a work in progress.