Top-Down Design with Functions and Classes Chapter 3.
3.1 Building Programs from Existing Information