Object-oriented design: the patterns, the SOLID principles, and the machine-coding problems you get asked to build.