Week 1: SDLC, Design Patterns & Version Control
Learn the software development lifecycle, SOLID design principles, version control workflows, testing strategies, and agile methodology for AI projects.
- Apply SOLID principles to Python software design
- Use Git workflows (GitFlow, trunk-based) for team collaboration
- Write unit, integration, and end-to-end tests
- Understand agile/scrum ceremonies and artifacts
This first lecture establishes the foundational framework for Software Engineering Principles. By the end of this session, you will have the conceptual grounding and practical starting point needed for the rest of the course.
Key Concepts
The lecture introduces the four main pillars of this course: SOLID Principles & Design Patterns, Git Workflows & Code Review, Testing: Unit, Integration, E2E, Agile/Scrum for AI Projects. Each will be explored in depth over the 14-week curriculum, with hands-on projects reinforcing theory at every stage.
This Week's Focus
Focus on mastering: SOLID Principles & Design Patterns and Git Workflows & Code Review. These are the prerequisites for everything in Week 2. The concepts build on each other — do not skip the practice exercises.
SE101 Project 1: Refactor a Data Pipeline to SOLID Standards
Take a messy data processing script and refactor it following SOLID principles. Add a full test suite, set up CI with GitHub Actions, and document with docstrings and a README.
- Refactored Python codebase (SOLID-compliant)
- Full test suite with >80% code coverage
- GitHub Actions CI pipeline (lint, test, type-check)
- README and API documentation
These represent the style and difficulty of questions you'll see on the midterm and final. Start thinking about them now.
Explain the Single Responsibility Principle with a real code example. Why does it matter?
What is the difference between unit tests and integration tests? Give examples for an ML pipeline.
Describe the GitFlow branching strategy and explain when to use a hotfix branch.