Lecture Notes¶
The lecture sequence follows the lifecycle of a software-intensive system while revisiting quality and change throughout the semester.
| Unit | Topic | Central question |
|---|---|---|
| 0 | Introduction | What makes software development an engineering discipline? |
| 1 | Processes & Life Cycles | How should work be organized under uncertainty? |
| 2 | Agile & Scrum | How can teams learn and deliver incrementally? |
| 3 | Requirements Engineering | What should the system do, and why? |
| 4 | Modeling with UML | How can we communicate structure and behavior? |
| 5 | Architecture | Which high-impact structural decisions shape the system? |
| 6 | Design Principles & Patterns | How do we reduce coupling and localize change? |
| 7 | Clean Code & Refactoring | How do we improve internal structure safely? |
| 8 | Version Control & Collaboration | How do teams coordinate changes and preserve history? |
| 9 | Software Testing | What evidence supports behavioral confidence? |
| 10 | CI/CD & DevOps | How do we shorten feedback loops and automate delivery? |
| 11 | Quality & Technical Debt | How do we reason about non-functional quality over time? |
| 12 | Secure Software Engineering | How do we engineer for adversarial conditions? |
| 13 | Management & Estimation | How do we plan while acknowledging uncertainty? |
| 14 | Maintenance & Evolution | How do systems survive years of change? |
| 15 | AI-Assisted SE | What changes when foundation models participate in development? |
Each note contains learning objectives, core concepts, and an activity or checklist suitable for class discussion.