Software Engineering II (CSC 309) at CalPoly

I am teaching  Software Engineering II (CSC 309) at California Polytechnic State University this Winter. I have been teaching this course since the Fall of 2022. This is a senior-level course for students in Computer Science and Software Engineering programs.

CSC309 is a continuation of the software lifecycle – Methods and tools for the implementation, integration, testing, and maintenance of large software systems; software development and testing environments; software quality assurance.


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

  1. Course Presentation
  2. Software Metrics: Code Quality
  3. Software Metrics: Structural Quality
  4. Stable Abstraction and Stable Dependency Principles
  5. Software Validation
  6. Description of Ideas for A Final Project
  7. Technical Debt
  8. Legacy Software
  9. [Sprint Review 1]
  10. Pair Programming
  11. Workshop: Pair Programming
  12. Unit Testing
  13. Workshop: jUnit 5
  14. [Sprint Review 2]
  15. Task Management
  16. Workshop: Taiga + Github Issues
  17. Project Dependencies Management
  18. Workshop: Maven
  19. [Sprint Review 3]
  20. Libraries and Frameworks
  21. Continuous Integration
  22. Continuous Deployment
  23. Workshop: GitHub Actions
  24. [Sprint Review 4]
  25. Software Cost Estimation
  26. Workshop: Constructive Cost Model


The source code from some assignments and projects is available on GitHub.