Software Design (CSC 509)

I am teaching  Software Design (CSC 509) at California Polytechnic State University this Fall. This is a senior-level course for students in Computer Science and Software Engineering programs.

CSC 509 offers a comprehensive exploration of software modeling and design. The course delves into methodologies and patterns, equipping learners with essential techniques for creating robust and efficient software solutions. Students engage in detailed case studies of real-world projects and acquire proficiency in designing large-scale software systems.


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

  1. Course Presentation
  2. Reviewing Fundamentals
  3. Programming in the Large vs. Small
  4. Object-Oriented Design
  5. Design Patterns
  6. Software Architectures
  7. Architecture Patterns
  8. Frameworks and Libraries
  9. Component-Based Software Development
  10. Platform Development
  11. Software Product Lines
  12. Design Smells
  13. Services and Micro-services
  14. Containers and Packing
  15. Model-Driven Development