The book consists of eight parts and seven intermezzos. Figure shows the dependence graph for the pieces of the book. The graph demonstrates that there are several paths through the book and that a partial coverage of the material is feasible. Parts through cover the foudations of data-driven program design.
Part introduces abstraction in designs.
Parts and are about generative recursion and accumulation. One and the same expression always evaluates to the same result, no matter how often we evaluate it. This property makes it easy to design, and to reason about, programs. To cope with interfaces between programs and the rest of the world, however, we enrich the language with assignment statements and abandon some of our algebraic reasoning. The last two parts show what this means for the design of programs.