A data-oriented introduction to program design
William J. Collins · ACM SIGCSE Bulletin · 1979
Stepwise refinement is an invaluable analytic tool for solving complex problems, but it is somewhat artificial for the simple problems encountered in the first half of an introductory programming course. This paper describes an alternate process which still provides for a gradual transition from a problem to an algorithm which solves the problem. Each algorithm, which is unambiguous and English-like, is synthesized from sample data and can be routinely translated into a (structured) program.