Thinking Through A Program
For a program to compute the desired result it
must proceed through a series of logical
steps, transforming the inputs into outputs.
Figuring out what those logical steps should
be is the task of the programmer.