Software Engineering I (CSC 308)

I am teaching  Software Engineering I (CSC 308) 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.

CSC308 covers principles for engineering requirements analysis and design of large software systems; software process models; methods of project planning, tracking, documentation, communication, and analysis of engineering tradeoffs.


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

  1. Course Presentation
  2. What is Software Engineering?
  3. Process Models
  4. Agile Methods I: Backlogs
  5. Agile Methods II: Task board
  6. Agile Methods III: A Project Management Tool – Taiga
  7. Clean Coding I
  8. Clean Coding II
  9. Software Design
  10. Unified Modeling Language: Class Diagram I
  11. Unified Modeling Language: Class Diagrams II
  12. Design Principles
  13. Design Patterns
  14. Behavioral Patterns: Observer
  15. Creational Patterns: Singleton
  16. Structural Patterns: Decorator and Composite
  17. Connecting Design Patterns
  18. Software Architecture I
  19. Software Architecture II
  20. Version Control Systems
  21. Version Control Systems II – GitHub
  22. Team Project
  23. Software Requirements
  24. Unified Modeling Language: Use Case Diagram
  25. Requirements Elicitation
  26. Final Review


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