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

  1. Module 1

    Software Requirements

    • Stakeholders, Goals, and Constraints
    • Functional and Quality Requirements
    • Use Cases and User Stories
    • Requirements Validation
    • Managing Ambiguity and Change
  2. 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
  3. Module 3

    Modular Design

    • Abstraction and Information Hiding
    • Cohesion and Coupling
    • Dependency Management
    • API Design and Compatibility
    • Designing for Change
  4. Module 4

    Architecture

    • Architectural Drivers and Quality Attributes
    • Layered and Hexagonal Architectures
    • Event-Driven Architecture
    • Service Decomposition
    • Architecture Decision Records
  5. 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
  6. Module 6

    Quality and Reliability

    • Static Analysis and Type Checking
    • Defensive Programming
    • Fault Handling and Resilience
    • Observability and Diagnostics
    • Performance and Capacity Engineering
  7. Module 7

    Delivery and Operations

    • Build Systems and Dependency Reproducibility
    • Continuous Integration
    • Deployment Strategies
    • Feature Flags and Rollback
    • Incident Response and Postmortems
  8. Module 8

    Team and Process

    • Iterative and Incremental Development
    • Planning Under Uncertainty
    • Technical Communication
    • Decision-Making and Ownership
    • Ethics and Professional Responsibility
  9. 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.