SICP — Scheme/JS Structure and Interpretation of Computer Programs — Comparison Edition
5.1.2   Abstraction in Machine Design