**The Best of Creative Computing Volume 1 (published 1976)**

BASIC, editing and correcting. Two sentences describe the purpose of an executive program, while other authors usually make a big deal out of it (although very few others even mention it). ***************************************************************************************************** The subject of loops is considered important enough to be worth the entire third chapter, five pages. Here the book begins to get a little difficult for those who are not mathematically oriented, with a program that computes binomial coefficients. The authors "use the convention of indenting instructions between a FOR-NEXT pair," which only six other books do. "This clearly shows the scope of a loop. The convention is particularly useful when nested loops occur, such as the double loop in ROOTS." Double loops are then illustrated with a neat 9-line program. ****************************************************************************************************** Page 19 contains the only example in this book of an author tooting his own horn, "… and then determines the cell of the tally list N in a very ingenious way in line 150." ******************************************************************************************************* In the fourth chapter, on Lists and Tables, DIM is introduced very casually, without fanfare or a long-winded lead-in, as is often the case elsewhere. ****************************************************************************************************** In chapter five on Functions and Subroutines there are no individual examples, although there are several short programs that include six of the ten standard functions listed. ******************************************************************************************************* The unique and excellent method of demonstrating rounding-off goes through each part of the argument of the INT statement to show how it affects the number involved. This is not an easy concept for many readers to understand, yet the authors have managed to find what must be the simplest way of explaining it. ****************************************************************************************************** Page 29 contains one of the few chinks in the armor: a program not explained. The reader is expected to know Euclid's Algorithm for finding the greatest common divisor of two integers. ****************************************************************************************************** Page 36 contains the most complex program so far, an Eternal Calendar, 54 lines, but this is not impossible for one without a head for math to figure out. ****************************************************************************************************** The chapter on Debugging goes into tracing, and is the only book to describe both "full trace" and "selective trace." ****************************************************************************************************** Part Two, on applications, begins on page 47, with chapters on problems from elementary mathematics, number theory, simulation, games, business, files, text processing, statistics, vectors and matrices, calculus, and "special topics." ****************************************************************************************************** The chapter on number theory is where the book really begins to get difficult for all but math majors. The problem on the greatest common divisor isn't all that difficult, but the next one is, on modular arithmetic, using the Chinese remainder theorem. The rest of the chapter isn't any easier, with a counting problem (making change) being rather difficult, even with the explanation, which could be longer, but perhaps would have to be much too long for non-mathmajors. ********************************************************************************************************* The next chapter, on simulation, eases off somewhat, and contains an explanation of RND that is simple and easy to grasp, and is better done than elsewhere. The chapter contains a baseball program that simulates the batting of one side in a nine-inning game; this is rather complex for all but the top-IQ types. The Knight's Tour problem is also rather difficult for a beginner's book. *********************************************************************************************************** With the chapter on Business Problems, the book goes back to something less than difficult. Many other authors would put those complex chapters (on number theory, simulation, and games) at the end of the book, so as not to discourage a reader who is only halfway through. *********************************************************************************************************** The chapter on Files is the only one among these books that distinguishes between Teletype files and numeric-and-string files, with a compact little table to summarize the differences. ************************************************************************************************************ The chapter on Statistics goes into contingency tables, using the chi-square test; both are introduced nicely, understandable even to those not majoring in mathematics, although there is no explanation of "number of degrees of freedom." The chapter also contains a section giving A Ranking Procedure, with an explanation that is rather murky. ************************************************************************************************************ The text of the chapter on Vectors and Matrices is a little too loose to be readily understandable; the text accompanying the problem on electrical networks is not at all understandable to other than electrical engineers; the section on Markov Chains is not very well explained and both runs give data that is difficult to identify. ************************************************************************************************************ The chapter on Calculus is for math majors only, or for those with a knowledge of advanced math. *********************************************************************************************************** All the applications chapters contain, after the exercises at the end of each chapter, one or more projects that present more complex problems than do the exercises. These are all well thought out, and should provide the reader who has access to the terminal with a very thorough workout of his knowledge of the language, as well as, in many cases, his knowledge of (and aptitude for) mathematics. ************************************************************************************************************ The last section of the book is on Harmony in Music, giving a long program that writes four-part harmony for a given melody. The three projects for this chapter involve preparing a program to generate simple melodies randomly, generating poetry randomly, and devising programs to produce artistic patterns "on whatever plotting devices are available," with a number of helpful hints. *********************************************************************************************************** The program index at the end of the book is unique: for each of the 107 programs in the book, it gives the name, application, and page. The main index must have been computer-generated, as there are several trivial entries, including Ramanujan and "Oz, Land of." ************************************************************************************************************ As for drawbacks, the main one is that there are no answers to the exercises. The book contains only three flowcharts. The reader with only a modest mathematical background may have difficulty with the chapters on number theory, simulation, and games. REM is seldom used, although the authors say in a footnote that "REM statements are not always used in the programs in this book because all the programs are amply discussed in the text." *********************************************************************************************************** There are very few individual examples of statements and commands in this text; however, many sample programs make up for this by showing the statements commands in use. ********************************************************************************************************* All in all, this is the best book on the subject at this level, even better in its second edition than the first. ******************************************************************************************************** The second edition inserts a five-line program as the first one in the book, before the 17-line one, to further simplify the beginning. These programs, and all the others in the book, were rerun for the second edition. A few blank lines have been added to separate groups of statements in programs not previously so treated. ******************************************************************************************************** The chapter on timesharing has been moved up from fifth to second place, and increased from two and a half pages to over four. Also added is a section on Commands in Time Sharing, and information on eight editing commands. The chapter on functions and subroutines has a new section on standard functions and multiple-line definitions. ********************************************************************************************************* The chapter on loops opens the same, but a new program has been inserted as the first one, on permutations and combinations. Several new exercises have been added at the end of the chapter, and some of the others have been reworded; this holds also for some other chapters. ********************************************************************************************************** The sixth chapter, on Alphabetic Information, is new to the second edition, and is all about strings. The first chapter on applications drops the section on Large-Number Arithmetic, which is a good idea, as it required a long and complex program. Replacing it is the Counting Problem, on making change, which is much easier to understand and to appreciate. The chapter on business problems adds a section on Critical Path Analysis. ********************************************************************************************************** The two new chapters in the applications part of the book are on Files and on Text Processing (line editing, character handling, constructing an index, codes). *********************************************************************************************************** The last chapter, Special Topics, eliminates the section on Teaching Machines, along with its teaching program. In its place is the complicated Marriage Rules in Primitive Societies, not as interesting but perhaps more indicative of what is being run on computers these days. The section on A Model From Ecology is the same, with one interesting change. In the first edition, the program output is a graph,