January 1967 - Vol. 10 No. 1
![January 1967 issue cover image](https://cacm.acm.org/wp-content/uploads/1967/01/363018.cover_.jpg?w=125)
Features
During the past year, the Communications has printed approximately twenty papers in each of three main areas: programming language development, compiler management and construction, and numerical methods. In addition, about twenty new algorithms were published, as well as half a dozen papers covering the general area of education in computer science; new proposed standards were also disseminated for various types of paper tape, punched cards, and for data communication codes. Three of the twelve issues were conference issues consisting of papers originally given at the ACM Conference on Programming Languages and Pragmatics, the ACM Symposium on Symbolic and Algebraic Manipulation, and a Symposium on the Impact of Computing on Undergraduate Mathematics. A survey paper was published on simulation languages, and two reports were printed covering the computer scene in Communist China and Europe, respectively.
A university’s educational program in computer science
After a review of the power of contemporary computers, computer science is defined in several ways. The objectives of computer science education are stated, and it is asserted that in a North American university these will be achieved only through a computer science department. The program at Stanford University is reviewed as an example. The appendices include syllabi of Ph.D. qualifying examinations for Stanford's Computer Science Department.
System performance evaluation: survey and appraisal
The state of the art of system performance evaluation is reviewed and evaluation goals and problems are examined. Throughput, turnaround, and availability are defined as fundamental measures of performance; overhead and CPU speed are placed in perspective. The appropriateness of instruction mixes, kernels, simulators, and other tools is discussed, as well as pitfalls which may be encountered when using them. Analysis, simulation, and synthesis are presented as three levels of approach to evaluation, requiring successively greater amounts of information. The central role of measurement in performance evaluation and in the development of evaluation methods is explored.
A code for non-numeric information processing applications in online systems
A code has been specifically designed to simplify the internal information processing operations within an online computer system with respect to non-numeric applications, and to maximize the transfer rate of the information channel linking the system and the system user. The code has direct application to problems in areas such as information retrieval, document classification, computer-aided teaching and text editing.
This code, called IPC (Information Processing Code), is an 8-bit code set constructed so that 7, 6, 5 and 4-bit subsets can be easily derived from the basic set. The code set is organized so that simple binary operations can distinguish between the numeric alphabetic, special symbol and control character codes. The number of useable characters within the basic set size may be expanded either by use of escape codes included in the set, or by suitable interpretation of otherwise unassigned codes on the basis of the requirements of local environments.
Letters to the editor: An interpretive input routine for linear programming
In this descriptive article an input code is presented which greatly simplifies data input to any linear programming solution routine, for subsequent use either as a predagogical device or for solving rather small LP problems. This latter (limited) use derives not at all from inherent limitations in the code itself, but from an efficiency evaluation: large LP problems would doubtless benefit from an input system more suited for bulk data handling than the input code described.
From a user's standpoint, input appears almost exactly as a textbook presentation of the LP problem (limited only by a keypunch's inability to write subscripts, etc.). The input interpreter scans columnwise, thus no fixed format data preparation is required. The user may also, under very general requirements only, liberally use editorial comments throughout the input deck as an aid in identification, e.g., of row constraints.
The article includes examples of input, output from a solution routine presently in use, and a skeleton flowchart of the input interpreter.
A unifying computational method for the analysis of complete factorial experiments
A computational method which may be used for the calculation of sums of squares in the analysis of variance of complete factorial experiments and in the computation of main effect or interaction means is described. The method is elucidated as unifying since one method can be used for a variety of purposes each previously requiring different methods. The programming advantages of such a method are obvious. The following variants are discussed: (1) the standard analysis of variance; (2) analyses omitting certain levels of one or more factors; (3) separate analyses for some levels of a factor or for combinations of levels of more than one factor. These are performed simultaneously; (4) the calculation of main effect or interaction means.
The method expects the data in standard order and it leaves the data in that order so that many analyses of the same data can be performed without rearrangement. The total sum of squares, excluding a replication sum of squares, is partitioned into all polynomial partitions and their interactions each with one degree of freedom. This is so even if factors have unequally spaced factor levels.
Data directed input-output in FORTRAN
A statement which is similar to the NAMELIST statement of FORTRAN IV has been incorporated in the FORTRAN 63 compiler. The FORTRAN 63 implementation allows a greater flexibility and simplicity than the FORTRAN IV feature. The Hollerith names, the location, the made and the dimensions of a variable can be discovered by means of standard FORTRAN statements. Methods of using this information are illustrated in relation to general purpose data directed input and output routines; some other uses such as matrix manipulation are discussed.
WATFOR—The University of Waterloo FORTRAN IV compiler
WATFOR is an in-core, load-and-go compiler which has been implemented within the IBM 7040/44 operating system. FORTRAN IV was selected as the source language in order to achieve maximum language compatibility with other available compiling systems, in particular the IBM 7040/44 FORTRAN IV system. The principal advantage of the WATFOR compiler is that it translates FORTRAN IV programs at speeds of up to 100 statements per second. Since the compiler resides in core there is virtually no systems overhead, and hence large batches of “student” programs may be processed very efficiently. The compiler also provides extensive error diagnostics, during both the compilation and the execution phases of a program run. This feature makes the system attractive to both learners and learned users alike.
DITRAN—a compiler emphasizing diagnostics
DITRAN DIagnostic FORTRAN) is an implementation of ASA Basic FORTRAN with rather extensive error checking capabilities both at compilation time and during execution of a program. The need for improved diagnostic capabilities and some objectives to be met by any compiler are discussed. Attention is given to the design and implementation of DITRAN and the particular techniques employed to provide the diagnostic features. The handling of error messages by a general macro approach is described. Special features which provide teaching aids for use by instructors are noted.
A note on computing approximations to the exponential function
Two methods are discussed which result in near minimax rational approximations to the exponential function and at the same time retain the desirable property that the approximation for negative values of the argument is the reciprocal of the approximation for corresponding positive values. These methods lead to approximations which are much superior to the commonly used convergents of the Gaussian continued fraction for the exponential. Coefficients and errors are given for the intervals [-1/2 ln 2, 1/2 ln 2] and [-ln 2, ln 2].
Two methods are discussed which result in near minimax rational approximations to the exponential function and at the same time retain the desirable property that the approximation for negative values of the argument is the reciprocal of the approximation for corresponding positive values. These methods lead to approximations which are much superior to the commonly used convergents of the Gaussian continued fraction for the exponential. Coefficients and errors are given for the intervals [-1/2 ln 2, 1/2 ln 2] and [-ln 2, ln 2].
On the computation of least squares polynomials
Rounding error accumulated during digital computation of a least squares polynomial makes the computed polynomial only an approximation to the true least squares polynomial. A simple method for adjusting the constant term of the computed polynomial to get a better approximation to the true least squares polynomial is described.
An improvement to iterative methods of polynomial factorization
Methods of polynomial factorization which find the zeros one at a time require the division of the polynomial by the accepted factor. It is shown how the accuracy of this division may be increased by dividing in order of both ascending and descending powers of the variable and choosing a crossover point which minimizes a very simply calculated error criterion.