Including easily digested information about fundamental techniques and concepts in software construction, this book is distinct in unifying pure theory with pragmatic details. Driven by generic problems and concepts, with brief and complete illustrations from languages including C, Prolog, Java, Scheme, Haskell and HTML. This book is intended to be both a how-to handbook and easy reference guide. Discussions of principle, worked examples and exercises are presented. All concepts outside introductory programming are explained with clear demarcation and dependencies so the experienced programmer can quickly locate material. Readable in a linear manner, with short mono-thematic to encourage dipping and reference. Also included are sections on open problems in software theory and practice. While little other than a novice programmer's knowledge is explicitly assumed, a certain conceptual maturity, either through commercial programming or academic training is required – each language is introduced and explained briefly as needed.
This book is organised into a large number of brief, self-contained entries.
Admittedly, there is no such thing as a self-contained entry. For example, you need some knowledge of English to understand this paragraph. But, the principle is that each entry, of one or two pages, is a conceptual whole as well as a part of a greater whole (see note 20) in the same way that a car has four whole wheels, and not eight half wheels.
Some entries are intended to demonstrate a technique, or introduce an historically contingent fact such as the actual syntax of a contemporary language, or in this case, a specific issue regarding this book. Others are intended to illustrate a more eternal truth. They may be about a contemporary language, but stress a philosophical position or broadly based attitude. Both of these I have called notions. Finally, there are entries that are intended to cause the reader to do something other than just nodding their head as a sign of either agreement or an incipient dormant state. These are the exercises.