Features
Teaches software design by showing programmers how to build the tools they use every day.
Each chapter includes exercises to help readers check and deepen their understanding.
All the example code can be downloaded, re-used, and modified under an open license.