Software Design

I am teaching  Software Design(CSE 564) this 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 25 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


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