CS306
Software Engineering
Building software in teams and at scale: process, version control, testing, and design principles.
9 modules · 45 lessons · Practice after every lesson
Syllabus
Module 1
Software Requirements
- Stakeholders, Goals, and Constraints
- Functional and Quality Requirements
- Use Cases and User Stories
- Requirements Validation
- Managing Ambiguity and Change
Module 2
Version Control and Collaborative Development
- Repository Structure and Commit Discipline
- Branching and Integration Strategies
- Code Review
- Merge Conflict Resolution
- Traceability and Release History
Module 3
Modular Design
- Abstraction and Information Hiding
- Cohesion and Coupling
- Dependency Management
- API Design and Compatibility
- Designing for Change
Module 4
Architecture
- Architectural Drivers and Quality Attributes
- Layered and Hexagonal Architectures
- Event-Driven Architecture
- Service Decomposition
- Architecture Decision Records
Module 5
Testing Strategy
- Test Pyramids and Test Portfolios
- Unit and Component Testing
- Integration and Contract Testing
- Property-Based and Fuzz Testing
- Testability and Dependency Injection
Module 6
Quality and Reliability
- Static Analysis and Type Checking
- Defensive Programming
- Fault Handling and Resilience
- Observability and Diagnostics
- Performance and Capacity Engineering
Module 7
Delivery and Operations
- Build Systems and Dependency Reproducibility
- Continuous Integration
- Deployment Strategies
- Feature Flags and Rollback
- Incident Response and Postmortems
Module 8
Team and Process
- Iterative and Incremental Development
- Planning Under Uncertainty
- Technical Communication
- Decision-Making and Ownership
- Ethics and Professional Responsibility
Module 9
Maintenance and Evolution
- Refactoring and Technical Debt
- Legacy-System Comprehension
- Migration Strategies
- Backward Compatibility and Deprecation
- Measuring and Improving Engineering Systems
Start Software Engineering.
No setup, nothing to install. Try the first lessons before you sign up.