Schedule
Thank you to Maria Kim for her contributions to the slides and practical assignments.
Learning Git Flow
Concepts
Assignments
What is Software Engineering?
Concepts
Introduction to Software Engineering
Reading
- GitHub Flow
- Software Engineering at Google: What is Software Engineering?
- Cooperative Software Development: Chapter 2 (Organizations), Chapter 5 (Quality)
- Using Git on Your Own.
Assignments
Software Testing
Concepts
Reading
- Cooperative Software Development: Chapter 11 (Verification)
- Software Engineering at Google: Testing Overview.- Python Testing with pytest: Chapters 1-2
Assignments
Writing Tests
Concepts
Reading
- Python Testing with pytest: Chapters 1-2
- Software Engineering at Google: Unit Testing
Assignments
Writing maintainable tests assignment
Processes
Concepts
Reading
Cooperative Software Development: Chapter 9 (Process).
Assignments
Continuous Integration
Concepts
Continuous Integration and Delivery
Reading
- Software Engineering at Google: Continuous Integration
- Software Engineering at Google: Continuous Integration
Assignments
- Continue Short-term Project
- Conceptual Quiz
- Conceptual Quiz
- Practical: GitHub Actions
Requirements Engineering
Concepts
Reading
- Cooperative Software Development: Chapter 6 (Requirements)
- Building Software Together
Assignments
- Finish short-term project
- Long-term Project
- Practical: Dependencies using poetry
Software Design
Concepts
Reading
A Philosophy of Software Design: Chapters 1-3
Assignments
Continue Project 2
Software Complexity
Concepts
Reading
- A Philosophy of Software Design: Chapters 1-3
- A Philosophy of Software Design: Chapters 7, 12-15
Assignments
- Continue Project 2
- Conceptual Quiz
- Conceptual Quiz
- Practical: Module Depth
Programming Styles
Concepts
Reading
Review programming styles: good old times, monolith, and cookbook
Assignments
- Continue and finish project 2
- Practical: cookbook style
- Practical: pipeline style
- Practical: object-oriented style
- Conceptual Quiz