Software Design

I am teaching  Software Design(CSE 564) in Spring 2021. I have taught this course for since Fall 2020.

This course: (a) examines software design issues and techniques; (b) presents a comparison of design methods and a survey of design representations; (c) review 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.


version Fall 2020


This course includes 24 lectures as follows:

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


Some lectures have been recorded and are available in my YouTube Channel