Software Engineering II (CSC 309)

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.

CSC 309 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. [Sprint Review 1]
  7. Let’s Add Features to Our Final Project
  8. Technical Debt
  9. Test Coverage
  10. Application Programming Interfaces I
  11. Application Programming Interfaces II
  12. Connecting the Dots I
  13. [Sprint Review 2]
  14. Libraries and Dependencies Management
  15. Pair Programming
  16. Continuous Integration
  17. Connecting the Dots II
  18. Code Review
  19. [Sprint Review 3]
  20. Tasks vs. Issues
  21. Test-Driven Development
  22. Frameworks
  23. Cost Estimation
  24. Final Exam Review
  25. Instructions for Final Project Delivery
  26. [Sprint Review 4]


These are examples of projects developed by students in this course:

Final Project from Winter 2023. A desktop application for tutoring students on UML class diagrams and object-oriented programming.

Final Project from Spring 2023. A desktop application for tutoring students on flowchart diagrams and structural programming.