Author Edsger W. Dijkstra introduces A Discipline of Programming with the statement, "My original idea was to publish a number of beautiful algorithms in such a way that the reader could appreciate their beauty." In this classic work, Dijkstra achieves this goal and accomplishes a great deal more.
He begins by considering the questions, "What is an algorithm?" and "What are we doing when we program?" These questions lead him to an interesting digression on the semantics of programming languages, which, in turn, leads to essays on programming language constructs, scoping of variables, and array references. Dijkstra then delivers, as promised, a collection of beautiful algorithms.
These algorithms are far ranging, covering mathematical computations, various kinds of sorting problems, pattern matching, convex hulls, and more. Because this is an old book, the algorithms presented are sometimes no longer the best available. However, the value in reading A Discipline of Programming is to absorb and understand the way that Dijkstra thought about these problems, which, in some ways, is more valuable than a thousand algorithms.