Learning path

Software engineering

Practise the habits of building maintainable software: unit tests, safe refactoring, SOLID design, design patterns, version control, and clear contracts.

About this subject

Software engineering is about building programs that stay correct and understandable as they grow and as teams change them. It covers testing, design, maintenance, and the tools and processes teams use to work together.

This path covers unit testing with unittest, refactoring with tests as a safety net, SOLID design and dependency injection, the observer pattern, a model of how version control stores history, and design by contract with exceptions. Each lesson uses a small, complete program that runs on its own. Python has the full sequence. The other languages listed below add lessons that use that language's own idioms and standard library, such as Java threads, C++ smart pointers, C# LINQ, or Node.js streams, and appear only for the topics the language supports. The programs are simplified models chosen to make an idea visible, so they are a foundation for further study rather than a replacement for a full course or for production-grade software.

Before you start: Classes, functions, and exceptions.

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9