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.
Syllabus
Arizona State University.
School of Computing and Augmented Intelligence.
version Fall 2022
Lectures
This course includes 26 lectures as follows (lecture slides available):
- Course Presentation
- Introduction
- Stepwise Refinement
- Modularization
- Assignment 01 Review
- Large vs. Small
- Object-Oriented Design
- Design Patterns
- Design Patterns – Observer
- Assignment 02
- Assignment 02 Review
- Design Patterns – Singleton
- Design Patterns – Decorator
- Design Patterns – Builder vs. Factory
- Assignment 03
- Midterm Review
- Design Patterns – Composite, Bridge, Strategy, and Chain of Responsibility
- Architectures and Frameworks
- Connecting the Dots
- Reviewing the Dots
- Architecture Patterns I
- Architecture Patterns II
- Architecture Patterns III
- Design Smells
- Model-Driven Development
- Model-Driven Development II
Videos
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.