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):
- Course Presentation
- What is Software Engineering?
- Process Models
- Agile Methods I: Backlogs
- Agile Methods II: Task board
- Agile Methods III: A Project Management Tool – Taiga
- Clean Coding I
- Clean Coding II
- Software Design
- Unified Modeling Language: Class Diagram I
- Unified Modeling Language: Class Diagrams II
- Design Principles
- Design Patterns
- Behavioral Patterns: Observer
- Creational Patterns: Singleton
- Structural Patterns: Decorator and Composite
- Connecting Design Patterns
- Software Architecture I
- Software Architecture II
- Version Control Systems
- Version Control Systems II – GitHub
- Team Project
- Software Requirements
- Unified Modeling Language: Use Case Diagram
- Requirements Elicitation
- Final Review
The source code from some assignments and projects is available on GitHub.