2020
Part 1: Why it all matters
1: The bigger picture

Part 2: Foundations of design
2: Separation of concerns
3: Abstraction and encapsulation
4: Designing for high performance
5: Testing your software

Part 3: Nailing down large systems
6: Separation of concerns in practice
7: Extensibility and f lexibility
8: The rules (and exceptions) of inheritance
9: Keeping things lightweight
10: Achieving loose coupling

1: The bigger picture

2: Separation of concerns

3: Abstraction and encapsulation


4: Designing for high performance


5: Testing your software

6: Separation of concerns in practice
7: Extensibility and f lexibility
8: The rules (and exceptions) of inheritance
9: Keeping things lightweight
10: Achieving loose coupling