little or no explanation as to how they work, other than the accompanying flowcharts. The reader must figure out a great deal by himself, and is not given adequate preparation in many cases. A program for building magic squares is given as early as page 16, 20 lines long, with a skeletal flowchart and no explanation of what a magic square is, much less some explanation of how the program works. A time-sharing terminal is essential because most of the lessons present a program and a flowchart, without any explanation or REM statements, only an exhortation to "Try it!" So if the program runs, the reader has an answer, but he probably won't understand how or why. This must be the "problem-solving approach" denoted by the book's subtitle. If so, it's a misnomer, as the computer solves the problems, not the reader. Of course, a bright reader could probably figure out what's going on, but should a programming book be written only for the top five percent (or less) of the population? There are four review tests within the first 95 pages, and they are scored by running given programs, with one's answers put into the DATA statements. There are no explanations whatsoever as to how these scoring programs work; this too is left as an exercise for the student. The writing style is not at all smooth, with such cute phrases as "by tags we mean the cute little messages...." Many statements are presented without explanation of any kind, such as RND in the magic-square program. The REM statement gets only 26 words of explanation. The few times a reader is asked to write a program, in the 41 lessons, he usually has not been given enough information beforehand to be able to do so, and since most of the programs are given in the text, he has had very little experience in writing programs - he's been running the author's programs nearly all the time. In a program that determines the highest common factor, there is no explanation that program lines 45 to 55 exchange the values of X and Y, one of the crucial parts of the program. Page 34 gives an uncompleted program, the reader being expected to fill in the missing seven lines. Some readers may learn from this type of teaching, but not many. A program on page 66 contains a command that no other author mentions: PAUSE. The second part of the book consists of 50 review problems, each with a short description of the problem, and a flowchart. The reader is expected to write programs that solve a great variety of problems, such as radix sorting, simulating a dice game, rank correlation, annuity interest, linear correlation, etc. A couple of the problems have complete or partial programs. The reader could learn much more if the programs required were simpler to write, and if he had to write his own flowcharts. As it is, many of the 50 review problems leave too much to the imagination. Review problem 6 is on a chi-square test, without bothering to explain what a chi-square test is. But a full 50-line program is given. There is no index. The last 39 pages contain program solutions to problems in the text, photographically reduced to the eye-straining dimension of 22 characters per horizontal inch. A reader can learn from this book if he will conscientiously dig his way through the lessons and programs. The question is, will he do this, or get bored early, and start to skip pages? For the very bright, with highly inquisitive minds, there is something to be mined here - the hard way. For the rest, meaning the majority, the book as a first text is much too difficult. The back cover notes that the author's books on computer programming "are distinguished by his originality of presentation and his ability to clarify computer languages." That latter claim may well be true of the author's FORTRAN and COBOL books, but not of this one. [image] 11. Basic BASIC: An Introduction to Computer Programming in BASIC Language, by James S. Coan. Pub. Sept. 11, 1970, by Hayden Book Co., New York, N. Y., 256 pages, 6 x 9, $8.25 (hardcover), $6.50 (paperback). Despite some drawbacks, a useful and helpful book. Rating: B+ There are many good points to this book, some of them unique. The statements, with brief explanations, are presented in boxes, and so stand out loud and clear. Some other authors intimidate the reader by presenting long and complex programs much too early; early in his book, Coan gets the reader used to the sight of long programs, but they are relatively simple ones. The 50-line program on page 36 is easy to understand; it has many explanatory PRINT lines and concerns various ways of printing the items in a list. This is in the chapter on Loops And Lists, which starts out, like the other chapters, with short programs (6 lines here) and builds up to larger ones. There are 13 chapters: Introduction to BASIC, Writing a Program, Loops And Lists, Computer Functions, Elementary Data Processing, Introduction to INPUT and RESTORE, Specific Applications (Euclidian algorithm, change of base, looking at integers digit by digit), The Quadratic Function, Trigonometry, Complex Numbers, Polynomials, MAT Instructions, Elementary Probability. There are seven appendixes: Storing Programs on Paper Tape, Error Diagnosis, Special Formatting Functions (TAB, IMAGE), Summary of Flowchart Shapes, Summary of Statements in BASIC, Index of Programs in Text, Answers to Even-Numbered Problems. There are problems for each section within a chapter. Some problems are check-marked to indicate that they are the more difficult ones. Some fairly complex programs are presented, such as the one on page 85 on questionnaire analysis, which very few authors get into. A few pages later, the author mixes two programs (two-way temperature conversion) and calls one or the other with 0 or 1, a unique program in these books. Not only is Coan the only author to go into complex numbers, he has an eight-page chapter on the subject. He is also the only one to give programs for synthetic division, integral zeros, real zeros, complex zeros, and the Descartes rule of signs, in a chapter on polynomials. And there is a fine seven-page appendix on Error Diagnosis, explaining the three types of errors in detail. The items on the minus side of the ledger may not bother every reader, but can be annoying to some. The type is small and uncomfortable to read; the back-of-the-book answers to problems are tiny photoreductions of Teletype output, 27 miniscule characters to the horizontal inch. The writing style is odd, as though it were a transcription of classroom lectures, quite prosaic and showing little imagination. For example the definition of IF-THEN is "XXX IF YYYYYY THEN ZZZ. If YYYYYY is true, transfer to line ZZZ. If YYYYYY is false, pass to the next line after XXX." Not very helpful. Some features of BASIC are given very short shrift. The explanation of the E format for exponentiation takes all of one sentence, and there is none at all for negative E. Some parts of the book, such as the portion on testing integers for divisibility, on page 102, contain mathematical manipulations that would be hard for many to follow without a teacher for guidance. The final chapter, on Elementary Probability, is one that only the top students may understand. The chapter contains a teaser, in showing a RUN that gives all the four-letter combinations of the word FLAG, but not the program itself. The excuse given is that "the techniques required for this vary so greatly from system to system that we will not present the program, but only the RUN." Most of these drawbacks can easily be ignored by the reader who is after the many excellent parts of this book, which in a future edition may become an outstanding one. [image] 310