
Communications of the ACM
Volume 4,  Number 4, April, 1961

                  J. R. Herndon   ACM Algorithm 49: Spherical Neumann
                                  Function . . . . . . . . . . . . . . . .  179

Communications of the ACM
Volume 5,  Number 12, December, 1962

                   J. N. Merner   ACM Algorithm 149: Complete Elliptic
                                  Integral . . . . . . . . . . . . . . . .  605

Communications of the ACM
Volume 6,  Number 6, June, 1963

                   O. G. Ludwig   ACM Algorithm 179: Incomplete Beta Ratio  314

Communications of the ACM
Volume 6,  Number 12, December, 1963

                     R. H. Kase   ACM Algorithm 219: Topological Ordering
                                  for Pert Networks  . . . . . . . . . . . 738--739

Communications of the ACM
Volume 7,  Number 8, August, 1964

                    W. Gautschi   ACM Algorithm 236: Bessel Functions of
                                  the First Kind . . . . . . . . . . . . . 479--480

Communications of the ACM
Volume 7,  Number 12, December, 1964

                   J. Boothroyd   ACM Algorithm 246: Graycode  . . . . . .  701

Communications of the ACM
Volume 8,  Number 8, August, 1965

                    W. Gautschi   ACM Algorithm 259: Legendre Functions
                                  for Arguments Larger than One  . . . . . 488--492

Communications of the ACM
Volume 9,  Number 5, May, 1966

                    W. Fletcher   ACM Algorithm 284: Interchange of Two
                                  Blocks of Data . . . . . . . . . . . . .  326

Communications of the ACM
Volume 10,  Number 4, April, 1967

                 I. D. Hill and   
                     M. C. Pike   ACM Algorithm 299: Chi-Squared Integral  243--244

Communications of the ACM
Volume 11,  Number 3, March, 1968

           Edsger Wybe Dijkstra   Go to statement considered harmful . . . 147--148

Communications of the ACM
Volume 12,  Number 5, May, 1969

         ANSI Subcommittee X3J3   Clarification of Fortran Standards ---
                                  Initial Progress . . . . . . . . . . . . 289--294

Communications of the ACM
Volume 12,  Number 9, September, 1969

                       N. Wirth   On Multiprogramming, Machine Coding, and
                                  Computer Organization  . . . . . . . . . 489--498

Communications of the ACM
Volume 1,  Number 11, November, 1970

                      V. Y. Lum   Multi-Attribute Retrieval with Combined
                                  Indexes  . . . . . . . . . . . . . . . . 660--665

Communications of the ACM
Volume 13,  Number 1, January, 1970

                     T. C. Lowe   Automatic segmentation of cyclic program
                                  structures based on connectivity and
                                  processor timing . . . . . . . . . . . . 3--6
            Walter Gautschi and   
                 Bruce J. Klein   Recursive computation of certain
                                  derivatives --- A study of error
                                  propagation  . . . . . . . . . . . . . . 7--9
              A. P. Mullery and   
                 G. C. Driscoll   A processor allocation method for
                                  time-sharing . . . . . . . . . . . . . . 10--14
                  R. F. Simmons   Natural Language Question-Answering
                                  Systems: 1969  . . . . . . . . . . . . . 15--30
                    E. T. Irons   Experience with an extensible language   31--40
                   U. Montanari   A note on minimal length polygonal
                                  approximation to a digitized contour . . 41--47
                Harald Stehfest   ACM Algorithm 368: Numerical Inversion
                                  of Laplace Transforms  . . . . . . . . . 47--49
                 H. E. Schaffer   ACM Algorithm 369: Generator of Random
                                  Numbers Satisfying the Poisson
                                  Distribution . . . . . . . . . . . . . . 49--49
                   E. L. Butler   ACM Algorithm 370: General Random Number
                                  Generator  . . . . . . . . . . . . . . . 49--52
                 J. K. S. McKay   ACM Algorithm 371: Partitions in Natural
                                  Order  . . . . . . . . . . . . . . . . . 52--52
                   K. B. Dunham   ACM Algorithm 372: An Algorithm to
                                  Produce Complex Primes CSIEVE  . . . . . 52--54
                 R. Griffin and   
                   K. A. Redich   Remark on ``Algorithm 347 [M1]: An
                                  Efficient Algorithm for Sorting with
                                  Minimal Storage'', by R. C. Singleton    54--54
                      Anonymous   Representation for calendar date for
                                  machine-to-machine data interchange  . . 55--55
                      Anonymous   Interchange rolls of perforated tape for
                                  information interchange  . . . . . . . . 56--56
                    W. H. Payne   Fortran Tausworthe pseudorandom number
                                  generator  . . . . . . . . . . . . . . . 57--57

Communications of the ACM
Volume 13,  Number 2, February, 1970

             David K. Hsiao and   
                Frank D. Harary   A Formal System for Information
                                  Retrieval from Files . . . . . . . . . . 67--73
          E. von Glaserfeld and   
                   P. P. Pisani   The multistore parser for hierarchical
                                  syntactic structures . . . . . . . . . . 74--82
                    Steven Vere   Translation equations  . . . . . . . . . 83--89
                   H. L. Morgan   Spelling correction in systems programs  90--94
                      J. Earley   An Efficient Context-Free Parsing
                                  Algorithm  . . . . . . . . . . . . . . . 94--102
                    C. E. Radke   The Use of Quadratic Residue Research    103--105
                       B. Jones   A Variation on Sorting by Address
                                  Calculation  . . . . . . . . . . . . . . 105--107
                  James R. Bell   The Quadratic Quotient Method: A Hash
                                  Code Eliminating Secondary Clustering    107--109
                 D. N. Ness and   
                R. S. Green and   
               W. A. Martin and   
                  G. A. Moulton   Computer education in a graduate school
                                  of management  . . . . . . . . . . . . . 110--114, 19
              M. F. Robbins and   
                    J. D. Beyer   An interactive computer system using
                                  graphical flowchart input  . . . . . . . 115--119
                    J. S. White   ACM Algorithm 373: Number of Doubly
                                  Restricted Partitions  . . . . . . . . . 120--120
                    J. S. White   ACM Algorithm 374: Restricted Partition
                                  Generator  . . . . . . . . . . . . . . . 120--120
                       H. Spath   ACM Algorithm 375: Fitting Data to One
                                  Exponential  . . . . . . . . . . . . . . 120--121
                       H. Spath   Fitting data to one exponential  . . . . 120--121
                       H. Spath   ACM Algorithm 376: Least Squares Fit by
                                  $f(x)=A\cos(Bx+C)$ . . . . . . . . . . . 121--122

Communications of the ACM
Volume 13,  Number 3, March, 1970

                   H. L. Morgan   Spelling correction in systems programs  90--94
             R. R. Fenichel and   
              J. Weizenbaum and   
                J. C. Yochelson   A Program to Teach Programming . . . . . 141--146
               J. R. Slagle and   
                    J. K. Dixon   Experiments with the M & N
                                  Tree-Searching Program . . . . . . . . . 147--154, 159
                  A. Batson and   
             Shy-Ming M. Ju and   
                     D. C. Wood   Measurements of Segment Size . . . . . . 155--159
                   G. A. Watson   On an Algorithm for Nonlinear Minimax
                                  Approximation  . . . . . . . . . . . . . 160--162
               D. G. Schweikert   A Comparison of Error Improvement
                                  Estimates for Adaptive Trapezoid
                                  Integration  . . . . . . . . . . . . . . 163--166
         Robert M. Schwarcz and   
             John F. Burger and   
              Robert F. Simmons   A Deductive Question Answerer for
                                  Natural Language Inference . . . . . . . 167--183
             A. F. Cardenas and   
                  W. J. Karplus   PDEL, a Language for Partial
                                  Differential Equations . . . . . . . . . 184--191 (or 184--190??)
               M. J. Levine and   
                  S. M. Swanson   ACM Algorithm 377: Symbolic Expansion of
                                  Algebraic Expressions  . . . . . . . . . 191--192
                   M. V. Kailas   Another method of converting from
                                  hexadecimal to decimal . . . . . . . . . 193--193
                       D. Pager   A number system for the permutations . . 193--193
              J. R. H. Dempster   Comment on a Paging Anomaly  . . . . . . 193--194
                   H. A. Maurer   A Note on the Complement of Inherently
                                  Ambiguous Context-Free Languages . . . . 194--194
                D. K. Hsiao and   
                   F. D. Harary   Corrigenda: ``A Formal System for
                                  Information Retrieval from Files'' . . . 266--266

Communications of the ACM
Volume 13,  Number 4, April, 1970

             A. J. DeSalvio and   
                J. G. Purdy and   
                         J. Rau   Creation and Control of Internal Data
                                  Bases Under a Fortran Programming
                                  Environment  . . . . . . . . . . . . . . 211--215
                    H. D. Mills   Syntax-Directed Documentation for PL360  216--222
               Rudolf Bayer and   
             Christoph Witzgall   Some Complete Calculi for Matrices . . . 223--237
               P. Brinch Hansen   The Nucleus of a Multiprogramming System 238--241, 250
                  C. M. Eastman   Representations for Space Planning . . . 242--250
             J. E. Pomeranz and   
                R. L. Weil, Jr.   The cyclical majority problem  . . . . . 251--254
                   E. N. Nilson   Cubic Splines on Uniform Meshes  . . . . 255--258
                  W. Pankiewicz   ACM Algorithm 378: Discretized
                                  Newton-like Method for Solving a System
                                  of Simultaneous Nonlinear Equations  . . 259--260
                   J. N. Lyness   ACM Algorithm 379: SQUANK (Simpson
                                  Quadrature Used Adaptively-Noise Killed) 260--263 (or 260--262??)
               W. F. Heess, Jr.   Comments on a paper by Wallace and Mason 264--265
                    J. L. Smith   Comment on multiprogramming under a page
                                  on demand strategy . . . . . . . . . . . 265--265
             Ronald C. de Vries   Comment on Lawler's Multilevel Boolean
                                  minimization . . . . . . . . . . . . . . 265--266
                   K. R. Knight   An Algol construction for procedures as
                                  parameters of procedures . . . . . . . . 266--266
                       N. Wirth   Corrigenda: ``On Multiprogramming,
                                  Machine Coding, and Computer
                                  Organization'' . . . . . . . . . . . . . 266--266

Communications of the ACM
Volume 13,  Number 5, May, 1970

                       L. Hodes   Programming System for the On-Line
                                  Analysis of Biomedical Images  . . . . . 279--283, 286
                   G. A. Sitton   Operations on Generalized Arrays with
                                  the Genie Compiler . . . . . . . . . . . 284--286
                        S. Vere   Translation Equations (Errata) . . . . . 286--286
               W. E. Sasser and   
              D. S. Burdick and   
               D. A. Graham and   
                   T. H. Naylor   Application of Sequential Sampling to
                                  Simulation. an Example Inventory Model   287--296
                      J. Loeckx   Algorithm for the Construction of
                                  Bounded-Context Parsers  . . . . . . . . 297--307
               John C. Reynolds   GEDANKEN --- A Simple Typeless Language
                                  Based on the Principle of Completeness
                                  and the Reference Concept  . . . . . . . 308--319
         S. Crespi-Reghizzi and   
                    R. Morpurgo   A language for treating graphs . . . . . 319--323
                  S. Laflin and   
                  M. A. Brebner   ACM Algorithm 380: In-situ Transposition
                                  of a Rectangular Matrix  . . . . . . . . 324--326 (or 324--325??)
                     R. E. Knop   ACM Algorithm 381: Random Vectors
                                  Uniform In Solid Angle . . . . . . . . . 326--326

Communications of the ACM
Volume 13,  Number 6, June, 1970

                    H. A. Elder   On the Feasibility of Voice Input to an
                                  On-Line Computer Processing System . . . 339--346
        C. R. Muthukrishnan and   
                   V. Rajaraman   On the Conversion of Decision Tables to
                                  Computer Programs  . . . . . . . . . . . 347--351
                   J. E. Grimes   Scheduling to Reduce Conflict in
                                  Meetings . . . . . . . . . . . . . . . . 351--352
                   D. G. Frantz   A PL\slash 1 program to assist the
                                  comparative linguist . . . . . . . . . . 353--356
                  F. J. Damerau   Automatic Parsing for Content Analysis   356--360
                     Peter Linz   Accurate Floating-Point Summation  . . . 361--362
                K. E. Hillstrom   Comparison of Several Adaptive
                                  Newton-Cotes Quadrature Routines in
                                  Evaluating Definite Integrals with
                                  Peaked Integrands  . . . . . . . . . . . 362--365
                  G. W. Stewart   Incorporating Origin Shifts into the QR
                                  Algorithm for Symmetric Tridiagonal
                                  Matrices . . . . . . . . . . . . . . . . 365--367
                    P. J. Chase   ACM Algorithm 382: Combinations of ${M}$
                                  Out of ${N}$ Objects . . . . . . . . . . 368--368
                    P. J. Chase   ACM Algorithm 383: Permutations of a Set
                                  with Repetitions . . . . . . . . . . . . 368--369
                  G. W. Stewart   ACM Algorithm 384: Eigenvalues and
                                  Eigenvectors of a Real Symmetric Matrix
                                  [F2] . . . . . . . . . . . . . . . . . . 369--371
                   R. L. London   Certification of Algorithm 245 (M1)
                                  Treesort 3: Proof of Algorithms --- A
                                  New Kind of Certification  . . . . . . . 371--374
             J. P. Chandler and   
                 W. C. Harrison   R201--SHELLSORT  . . . . . . . . . . . . 373--374
                     E. F. Codd   A Relational Model of Data for Large
                                  Shared Data Banks  . . . . . . . . . . . 377--387

Communications of the ACM
Volume 13,  Number 7, July, 1970

                    C. A. Grant   An interactive command generating
                                  facility . . . . . . . . . . . . . . . . 403--406
                   M. A. Wilkes   Conversational Access to a 2048-Word
                                  Machine  . . . . . . . . . . . . . . . . 407--414
                    W. M. Waite   The mobile programming system: STAGE 2   415--421
                Burton H. Bloom   Space/Time Trade-offs in Hash Coding
                                  with Allowable Errors  . . . . . . . . . 422--426
         E. G. Coffman, Jr. and   
                         J. Eve   File Structures Using Hashing Functions  427--432, 436
              Gordon H. Bradley   Algorithm and Bound for the Greatest
                                  Common Divisor of $n$ Integers . . . . . 433--436
                    W. A. Woods   Context-Sensitive Parsing  . . . . . . . 437--445
                 K. A. Paciorek   ACM Algorithm 385: Exponential Integral
                                  ${E}_i(x)$ . . . . . . . . . . . . . . . 446--447
                  G. H. Bradley   ACM Algorithm 386: Greatest Common
                                  Divisor of $n$ Integers and Multipliers  447--448
                 K. Sattley and   
                   R. Millstein   Comments on a paper by Lowe  . . . . . . 450--451
                  H. D. Baecker   A note on data base deadlocks  . . . . . 451--451
                 J. E. Pomeranz   Note on an Anomaly in Paging . . . . . . 451--451
                     B. R. Hunt   A Comment on Axiomatic Approaches to
                                  Programming  . . . . . . . . . . . . . . 452--452

Communications of the ACM
Volume 13,  Number 8, August, 1970

                  N. R. Nielsen   Allocation of Computer Resources. is
                                  Pricing the Answer . . . . . . . . . . . 467--474
                    G. Nagy and   
                       N. Tuong   Normalization Techniques for Handprinted
                                  Numerals . . . . . . . . . . . . . . . . 475--481
                      A. C. Day   Full Table Quadratic Searching for
                                  Scatter Storage  . . . . . . . . . . . . 481--482
                B. S. Brawn and   
            F. G. Gustavson and   
                   E. S. Mankin   Sorting in a Paging Environment  . . . . 483--494
              J. H. Saltzer and   
                  J. W. Gintell   The instrumentation of Multics . . . . . 495--500
              J. D. Ichbiah and   
                    S. P. Morse   A technique for generating almost
                                  optimal Floyd-Evans productions for
                                  precedence grammars  . . . . . . . . . . 501--508
                    K. Fielding   ACM Algorithm 387: Function Minimization
                                  and Linear Search  . . . . . . . . . . . 509--510
                  H. Hubner and   
                  H. Kremer and   
                 K. O. Linn and   
                   W. Schwering   ACM Algorithm 388: Rademacher Function   510--511
                  H. Hubner and   
                  H. Kremer and   
                 K. O. Linn and   
                   W. Schwering   ACM Algorithm 389: Binary Ordered Walsh
                                  Functions  . . . . . . . . . . . . . . . 511--511
                  H. Hubner and   
                  H. Kremer and   
                 K. O. Linn and   
                   W. Schwering   ACM Algorithm 390: Sequency Ordered
                                  Walsh Functions  . . . . . . . . . . . . 511--512 (or 511--511??)
                       J. McKay   ACM Algorithm 391: Unitary Symmetric
                                  Polynomials  . . . . . . . . . . . . . . 512--512
                      Anonymous   Identification of States of the United
                                  States (including the District of
                                  Columbia) for information interchange    514--515

Communications of the ACM
Volume 13,  Number 9, September, 1970

              W. Jack Bouknight   A Procedure for Generation of
                                  Three-Dimensional Half-Toned Computer
                                  Graphics Presentations . . . . . . . . . 527--536
                 G. Bracchi and   
                   M. Somalvico   Interactive Software System for
                                  Computer-Aided Design. an Application to
                                  Circuit Project  . . . . . . . . . . . . 537--545
                  I. Hirschsohn   AMESPLOT, a Higher Level Data Plotting
                                  Software System  . . . . . . . . . . . . 546--555
             Cleve B. Moler and   
               Louis P. Solomon   Integrating Square Roots . . . . . . . . 556--557
                   G. W. Kimble   A Variation of the Goodman-Lance Method
                                  for the Solution of Two-Point Boundary
                                  Value Problems . . . . . . . . . . . . . 557--558
                M. Wayne Wilson   Optimal Starting Approximations for
                                  Generating Square Root for Slow or No
                                  Divide . . . . . . . . . . . . . . . . . 559--561 (or 559--560??)
                  L. W. Ehrlich   Complex Matrix Inversion Versus Real . . 561--562
                M. H. van Emden   Increasing the Efficiency of Quicksort   563--567 (or 563--566??)
            Robert R. Smith and   
                  Dennis McCall   ACM Algorithm 392: Systems of Hyperbolic
                                  P.D.E. . . . . . . . . . . . . . . . . . 567--570
                   S. K. Abdali   ACM Algorithm 393: Special Series
                                  Summation with Arbitrary Precision . . . 570--570
                     R. B. Dial   ACM Algorithm 394: Decision Table
                                  Translation  . . . . . . . . . . . . . . 571--573 (or 571--572??)
             Leslie Lamport and   
                     J. R. Bell   Comment on Bell's Quadratic Quotient
                                  Method for Hash Code Searching . . . . . 573--574
                       Z. Bavel   On the Number of Automorphisms of a
                                  Singly Generated Automaton . . . . . . . 574--575

Communications of the ACM
Volume 13,  Number 10, October, 1970

                    W. A. Woods   Transition Network Grammars for Natural
                                  Language Analysis  . . . . . . . . . . . 591--606
                  J. Earley and   
                     H. Sturgis   A formalism for translator interactions  607--617
                     G. W. Hill   ACM Algorithm 395: Student's
                                  $t$-Distribution . . . . . . . . . . . . 617--619
                     G. W. Hill   ACM Algorithm 396: Student's
                                  $t$-Quantiles  . . . . . . . . . . . . . 619--620
                S. K. Chang and   
                        A. Gill   ACM Algorithm 397: An Integer
                                  Programming Problem  . . . . . . . . . . 620--621
                    R. A. Stone   ACM Algorithm 398: Tableless Date
                                  Conversion . . . . . . . . . . . . . . . 621--621
                 J. J. Seppanen   ACM Algorithm 399: Spanning Tree . . . . 621--622
                  G. C. Wallick   ACM Algorithm 400: Modified Havie
                                  Integration  . . . . . . . . . . . . . . 622--624
                        R. Peto   Remark on ``Algorithm 347 [M1]: An
                                  Efficient Algorithm for Sorting with
                                  Minimal Storage''  . . . . . . . . . . .  624
                    L. B. Smith   The use of interactive graphics to solve
                                  numerical problems . . . . . . . . . . . 625--634

Communications of the ACM
Volume 13,  Number 11, November, 1970

                  P. LaFata and   
                    J. B. Rosen   An interactive display for approximation
                                  by linear programming  . . . . . . . . . 651--659
                      V. Y. Lum   Multi-attribute retrieval with combined
                                  indexes  . . . . . . . . . . . . . . . . 660--665
                   C. J. Mifsud   A multiple-precision division algorithm  666--668
                  K. Conrow and   
                    R. G. Smith   NEATER2: A PL/I Source Statement
                                  Reformatter  . . . . . . . . . . . . . . 669--675
              James R. Bell and   
               Charles H. Kaman   The Linear Quotient Hash Code  . . . . . 675--677
                   C. J. Cheney   A Nonrecursive List Compacting Algorithm 677--678
                      Anonymous   Proposed American National Standard.
                                  Recorded magnetic tape for information
                                  interchange (1600 CPI, phase encoded)    679--685
                      Anonymous   Proposed American National Standard.
                                  Unrecorded magnetic tape for information
                                  interchange (9 track-200 and 800 CPI,
                                  NRZI and 1600 CPI, P.E.) . . . . . . . . 686--692
                     P. Bratley   ACM Algorithm 401: An Improved Algorithm
                                  to Produce Complex Primes  . . . . . . . 693--693
                M. H. van Emden   ACM Algorithm 402: Increasing the
                                  Efficiency of Quicksort  . . . . . . . . 693--694
                   W. J. Wilson   A generalized method for generating
                                  argument/function values . . . . . . . . 696--697
                   J. R. Ehrman   Correction to 'logical' arithmetic on
                                  computers with two's complement binary
                                  arithmetic . . . . . . . . . . . . . . . 697--698
                   A. Bernstein   Comment on the working set model for
                                  program behavior . . . . . . . . . . . . 698--699
                       J. Rokne   Condition numbers of Pei matrices  . . . 699--699

Communications of the ACM
Volume 13,  Number 12, December, 1970

              M. V. Mathews and   
                    F. R. Moore   GROOVE-A program to compose, store, and
                                  edit functions of time . . . . . . . . . 715--721
               James C. Tiernan   An Efficient Search Algorithm to Find
                                  the Elementary Circuits of a Graph . . . 722--726
                C. Betourne and   
               J. Boulenger and   
                  J. Ferrie and   
                  C. Kaiser and   
               S. Krakowiak and   
                    J. Mossiere   Process management and resource sharing
                                  in the multiaccess system ESOPE  . . . . 727--733
                   H. L. Morgan   An interrupt based organization for
                                  management information systems . . . . . 734--739
                 R. J. Thompson   Improving round-off in Runge-Kutta
                                  computations with Gill's method  . . . . 739--740
                  S. C. Shapiro   The list set generator: a construct for
                                  evaluating set expressions . . . . . . . 741--744
                    N. A. Black   Optimum Merging from Mass Storage  . . . 745--749
                  G. W. Stewart   Errata: ACM Algorithm 384: Eigenvalues
                                  and Eigenvectors of a Real Symmetric
                                  Matrix [F2]  . . . . . . . . . . . . . . 750--750
                E. A. Fuchs and   
                  P. E. Jackson   Estimates of Distributions of Random
                                  Variables for Certain Computer
                                  Communications Traffic Models  . . . . . 752--757
                   C. C. Pinter   On decomposing a Boolean function and
                                  simplifying the components separately    758--758
                 W. J. Raduchel   Efficient handling of binary data  . . . 758--759
               Robert A. Wagner   Finiteness Assumptions and Intellectual
                                  Isolation of Computer Scientists . . . . 759--760

Communications of the ACM
Volume 12,  Number 1, January, 1971

                   E. Lowry and   
                  C. W. Medlock   Object Code Optimization . . . . . . . . 13--22
                    Carl Hammer   Signature Simulation and Certain
                                  Cryptographic Codes  . . . . . . . . . . 3--14
                     A. Klinger   Pattern width at a given angle . . . . . 15--20
                  Shi-Kuo Chang   The Reconstruction of Binary Patterns
                                  from Their Projections . . . . . . . . . 21--25
                 G. Bracchi and   
                     D. Ferrari   Language for Treating Geometric Patterns
                                  in a Two-Dimensional Space . . . . . . . 26--32
                  R. A. Broucke   Construction of rational and negative
                                  powers of a formal series  . . . . . . . 32--35
                     R. C. Holt   Comments on Prevention of System
                                  Deadlocks  . . . . . . . . . . . . . . . 36--38
                 C. A. R. Hoare   Proof of a Program: FIND . . . . . . . . 39--45
                    L. G. Proll   Further evidence for the analysis of
                                  algorithms for the zero-one programming
                                  problem  . . . . . . . . . . . . . . . . 46--47
              M. W. Coleman and   
                   M. S. Taylor   ACM Algorithm 403: Circular Integer
                                  Partitioning . . . . . . . . . . . . . . 48--48
           C. W. Lucas, Jr. and   
                  C. W. Terrill   ACM Algorithm 404: Complex Gamma
                                  Function . . . . . . . . . . . . . . . . 48--49 (or 48--48??)
                   K. A. Redish   Comment on London's Certification of
                                  Algorithm 245  . . . . . . . . . . . . . 50--51
                  S. L. Pollack   Comment on the conversion of decision
                                  tables to computer programs  . . . . . . 52--52

Communications of the ACM
Volume 14,  Number 2, February, 1971

                   K. Schwayder   Conversion of Limited-Entry Decision
                                  Tables to Computer Programs. a Proposed
                                  Modification to Pollack's Algorithm  . . 69--73
                    K. Shwayder   Conversion of limited-entry decision
                                  tables to computer programs-a proposed
                                  modification to Pollack's algorithm  . . 69--73
            A. J. Bernstein and   
                    J. C. Sharp   A policy-driven scheduler for a
                                  time-sharing system  . . . . . . . . . . 74--78
                  N. R. Nielsen   An analysis of some time-sharing
                                  techniques . . . . . . . . . . . . . . . 79--90
               J. R. Slagle and   
                  C. D. Farrell   Experiments in Automatic Learning for a
                                  Multipurpose Heuristic Program . . . . . 91--99 (or 91--98??)
                H. Hurwitz, Jr.   On the Probability Distribution of the
                                  Values of Binary Trees . . . . . . . . . 99--102
               J. R. Slagle and   
                   R. C. T. Lee   Application of Game Tree Searching
                                  Techniques to Sequential Pattern
                                  Recognition  . . . . . . . . . . . . . . 103--110
                   J. Rokne and   
                   P. Lancaster   Complex Interval Arithmetic  . . . . . . 111--112
                 A. M. Dell and   
                 R. L. Weil and   
                 G. L. Thompson   ACM Algorithm 405: Roots of Matrix
                                  Pencils: The Generalized Eigenvalue
                                  Problem  . . . . . . . . . . . . . . . . 113--117

Communications of the ACM
Volume 14,  Number 3, March, 1971

                     A. M. Noll   Scanned-Display Computer Graphics  . . . 143--150
                   Z. Manna and   
                R. J. Waldinger   Toward Automatic Program Synthesis . . . 151--165
                  W. K. Winters   Scheduling Algorithm for a Computer
                                  Assisted Registration System . . . . . . 166--171
                 J. G. Williams   Storage Utilization in a Memory
                                  Hierarchy When Storage Assignment is
                                  Performed by a Hashing Algorithm . . . . 172--175
                     C. W. Gear   The Automatic Integration of Ordinary
                                  Differential Equations . . . . . . . . . 176--179
                   J. A. Howell   ACM Algorithm 406: Exact Solution of
                                  Linear Equations Using Residue
                                  Arithmetic . . . . . . . . . . . . . . . 180--184
                     C. W. Gear   ACM Algorithm 407: DIFSUB for Solution
                                  of Ordinary Differential Equations . . . 185--190

Communications of the ACM
Volume 14,  Number 4, April, 1971

                       N. Wirth   Program Development by Stepwise
                                  Refinement . . . . . . . . . . . . . . . 221--227
                  V. Y. Lum and   
              P. S. T. Yuen and   
                        M. Dodd   Key-to-Address Transform Techniques: A
                                  Fundamental Performance Study on Large
                                  Existing Formatted Files . . . . . . . . 228--239
               A. B. Tucker and   
                    M. J. Flynn   Dynamic Microprogramming. Processor
                                  Organization and Programming . . . . . . 240--250
               P. A. Talbot and   
                 J. W. Carr and   
         R. R. Coulter, Jr. and   
                    R. C. Hwang   Animator: an on-line two-dimensional
                                  film animation system  . . . . . . . . . 251--259
                M. L. Stein and   
                    W. D. Munro   On Complement Division . . . . . . . . . 260--264
                  J. M. McNamee   ACM Algorithm 408: A Sparse Matrix
                                  Package (Part I) . . . . . . . . . . . . 265--273

Communications of the ACM
Volume 14,  Number 5, May, 1971

 T. William Olle (Chairman) and   
      Codasyl Systems Committee   Introduction to `Feature analysis of
                                  generalized data base management
                                  systems' . . . . . . . . . . . . . . . . 308--318
                  N. R. Nielsen   The merit of regional computing networks 319--326
                  P. Krolak and   
                   W. Felts and   
                      G. Marble   A Man-Machine Approach Toward Solving
                                  the Traveling Salesman Problem . . . . . 327--334
                  Ugo Montanari   On the optimal detection of curves in
                                  noisy pictures . . . . . . . . . . . . . 335--345
                 D. L. Richards   How to Keep the Addresses Short  . . . . 346--349
                 R. R. Fenichel   On Implementation of Label Variables . . 349--350
           James H. Morris, Jr.   Another Recursion Induction Principle    351--354
                     H. Schmitt   ACM Algorithm 409: Discrete Chebychev
                                  Curve Fit  . . . . . . . . . . . . . . . 355--356
                 J. M. Chambers   ACM Algorithm 410: Partial Sorting [M1]  357--358

Communications of the ACM
Volume 14,  Number 6, June, 1971

                 Kazuaki Harada   Generation of rosary permutations
                                  expressed in Hamiltonian circuits  . . . 373--379
                    J. D. Foley   An approach to the optimum design of
                                  computer graphics systems  . . . . . . . 380--390
                      S. Amarel   Computer Science: A Conceptual Framework
                                  for Curriculum Planning  . . . . . . . . 391--401
         W. E. Bosarge, Jr. and   
                  O. G. Johnson   Numerical properties of the Ritz-Trefftz
                                  algorithm for optimal control  . . . . . 402--406
                 H. Tim Gladwin   A Note on Compiling Fixed Point Binary
                                  Multiplications  . . . . . . . . . . . . 407--408
                   A. G. Fraser   On the Meaning of Names in Programming
                                  Systems  . . . . . . . . . . . . . . . . 409--416
                   R. J. Walker   Binary summation . . . . . . . . . . . . 417--417
                   M. Zelkowitz   Interrupt driven programming . . . . . . 417--418

Communications of the ACM
Volume 14,  Number 7, July, 1971

             J. L. McKenney and   
                    F. M. Tonge   The State of Computer-Oriented Curricula
                                  in Business Schools 1970 . . . . . . . . 443--448
                A. J. Bernstein   A programmer training project  . . . . . 449--452
            Franklin L. DeRemer   Simple LR(k) grammars  . . . . . . . . . 453--460
          Terrence W. Pratt and   
             Daniel P. Friedman   A Language Extension for Graph
                                  Processing, and Its Formal Semantics . . 460--467 (or 461--467??)
                    Keith Paton   An algorithm for the blocks and cut
                                  nodes of a graph . . . . . . . . . . . . 468--475
                 D. E. Ferguson   Buffer Allocation in Merge-Sorting . . . 476--478
          C. V. Ramamoorthy and   
                 M. J. Gonzalez   Subexpression ordering in the execution
                                  of arithmetic expressions  . . . . . . . 479--485
              D. G. McVitie and   
                   L. B. Wilson   The Stable Marriage Problem  . . . . . . 486--490
              D. G. McVitie and   
                   L. B. Wilson   ACM Algorithm 411: Three Procedures for
                                  the Stable Marriage Problem  . . . . . . 491--492
                    J. \vCermak   ACM Algorithm 412: Graph Plotter . . . . 492--493

Communications of the ACM
Volume 14,  Number 8, August, 1971

                      Anonymous   Papers from the 2nd symposium on
                                  symbolic and algebraic manipulation  . .   ??
               Anthony C. Hearn   Applications of Symbolic Manipulation in
                                  Theoretical Physics  . . . . . . . . . . 511--516
                A. D. Hall, Jr.   The Altran system for rational function
                                  manipulation --- a survey  . . . . . . . 517--521
             Robert R. Fenichel   List Tracing in Systems Allowing
                                  Multiple Cell Types  . . . . . . . . . . 522--526
                       J. Moses   Algebraic Simplification: A Guide for
                                  the Perplexed  . . . . . . . . . . . . . 527--537
                 W. H. Jefferys   Automatic algebraic manipulation in
                                  celestial mechanics  . . . . . . . . . . 538--541
                  D. Barton and   
                    J. P. Fitch   General relativity and the application
                                  of algebraic manipulative systems  . . . 542--547
                     Joel Moses   Symbolic Integration: The Stormy Decade  548--560

Communications of the ACM
Volume 14,  Number 9, September, 1971

               Daniel Teichroew   Education Related to the Use of
                                  Computers in Organizations . . . . . . . 573--588
             Sadahiro Isoda and   
                Eiichi Goto and   
                   Izumi Kimura   An Efficient Bit Table Technique for
                                  Dynamic Storage Allocation of $2^n$-word
                                  Blocks . . . . . . . . . . . . . . . . . 589--592
                    Keith Paton   Corrigendum: ``An algorithm for the
                                  blocks and cutnodes of a graph'' . . . . 592--592
                Eugene Wong and   
                   T. C. Chiang   Canonical Structure in Attribute Based
                                  File Organization  . . . . . . . . . . . 593--597
              David L. Phillips   A note on best one-sided approximations  598--600
                     W. Liniger   A stopping criterion for the
                                  Newton-Raphson method in implicit
                                  multistep integration algorithms for
                                  nonlinear systems of ordinary
                                  differential equations . . . . . . . . . 600--601
                Ivan Flores and   
                  George Madpis   Average Binary Search Length for Dense
                                  Ordered Lists  . . . . . . . . . . . . . 602--603
                 R. R. Fenichel   Comment on Cheney's List-Compaction
                                  Algorithm  . . . . . . . . . . . . . . . 603--604

Communications of the ACM
Volume 14,  Number 10, October, 1971

                     Jay Earley   Toward an Understanding of Data
                                  Structures . . . . . . . . . . . . . . . 617--627
         ANSI Subcommittee X3J3   Clarification of Fortran Standards ---
                                  Second Report  . . . . . . . . . . . . . 628--642
            A. E. Oldehoeft and   
                    S. D. Conte   Experiments with an automated
                                  instructional system for numerical
                                  methods  . . . . . . . . . . . . . . . . 643--650
                   W. M. Newman   Display procedures . . . . . . . . . . . 651--660
               A. G. Nemeth and   
                   P. D. Rovner   User program measurement in a
                                  time-shared environment  . . . . . . . . 661--666
             P. J. Courtois and   
                 F. Heymans and   
                   D. L. Parnas   Concurrent Control with `Readers' and
                                  `Writers'  . . . . . . . . . . . . . . . 667--668
               J. N. Lyness and   
                       G. Sande   ACM Algorithm 413: ENTCAF and ENTCRE:
                                  Evaluation of Normalized Taylor
                                  Coefficients of an Analytic Function
                                  (C5) . . . . . . . . . . . . . . . . . . 669--675

Communications of the ACM
Volume 14,  Number 11, November, 1971

               P. Branquart and   
                    J. Lewi and   
                M. Sintzoff and   
                    P. L. Wodon   The composition of semantics in Algol 68 697--708
                  J. W. Hamblen   Using computers in higher education:
                                  past recommendations, status, and needs  709--712
                    D. L. Shell   Optimizing the Polyphase Sort  . . . . . 713--719
                 I. Aramaki and   
                T. Kawabata and   
                     K. Arimoto   Automation of etching-pattern layout . . 720--730
             Michael A. Malcolm   On Accurate Floating-Point Summation . . 731--736
                G. H. Golub and   
                    L. B. Smith   ACM Algorithm 414: Chebyshev
                                  Approximation of Continuous Functions by
                                  a Chebyshev System of Functions  . . . . 737--746

Communications of the ACM
Volume 14,  Number 12, December, 1971

                  R. Gordon and   
                   G. T. Herman   Reconstruction of Pictures from Their
                                  Projections  . . . . . . . . . . . . . . 759--768
               E. L. Amidon and   
                     G. S. Akin   Algorithmic Selection of the Best Method
                                  for Compressing Map Data Strings . . . . 769--774
                James K. Mullin   Retrieval-Update Speed Trade-offs Using
                                  Combined Indexes . . . . . . . . . . . . 775--776
                 M. C. Harrison   Implementation of the Substring Test by
                                  Hashing  . . . . . . . . . . . . . . . . 777--779
                 W. A. Wulf and   
              D. B. Russell and   
                A. N. Habermann   BLISS: A language for systems
                                  programming  . . . . . . . . . . . . . . 780--790
                    A. Rochfeld   New LISP Techniques for a Paging
                                  Environment  . . . . . . . . . . . . . . 791--795
             J. W. Blumberg and   
                    C. R. Foulk   A note on `a modification of Nordsieck's
                                  method using an ``off-step'' point'  . . 796--796
        Sven-\AAke A. Gustafson   Rapid Computation of General
                                  Interpolation Formulas and Mechanical
                                  Quadrature Rules . . . . . . . . . . . . 797--801
       Fran\ccois Bourgeois and   
           Jean-Claude Lassalle   An extension of the Munkres algorithm
                                  for the assignment problem to
                                  rectangular matrices . . . . . . . . . . 802--804
               F. Bourgeois and   
                 J. C. Lassalle   ACM Algorithm 415: Algorithm for the
                                  Assignment Problem (Rectangular
                                  Matrices)  . . . . . . . . . . . . . . . 805--806
           Sven-\AAke Gustafson   ACM Algorithm 416: Rapid Computation of
                                  Coefficients of Interpolation Formulas
                                  [E1] . . . . . . . . . . . . . . . . . . 806--807
           Sven-\AAke Gustafson   ACM Algorithm 417: Rapid Computation of
                                  Weights of Interpolatory Quadrature
                                  Rules [D1] . . . . . . . . . . . . . . . 807--807

Communications of the ACM
Volume 18,  Number 1, January, 1971

                  A. V. Aho and   
              P. J. Denning and   
                   J. D. Ullman   Principles of optimal page replacement   80--93

Communications of the ACM
Volume 5,  Number 6, June, 1972

              S. C. Johnson and   
                B. W. Kernighan   Remark on ``CACM Algorithm 397'' . . . .  469

Communications of the ACM
Volume 8,  Number 9, September, 1972

              R. H. Bartels and   
                  G. W. Stewart   Algorithm 432: The Solution of the
                                  Matrix Equation $AX -+BX = C$  . . . . . 820--826

Communications of the ACM
Volume 15,  Number 1, January, 1972

                     A. M. Lesk   Pictorial pattern recognition and the
                                  phase problem of X-ray crystallography   3--6
                    S. Levialdi   On Shrinking Binary Picture Patterns . . 7--10
                 R. O. Duda and   
                     P. E. Hart   Use of the Hough transformation to
                                  detect lines and curves in pictures  . . 11--15
                E. T. Irons and   
                   F. M. Djorup   A CRT editing system . . . . . . . . . . 16--20
                    T. A. Dwyer   Teacher/student authored CAI using the
                                  NEWBASIC system  . . . . . . . . . . . . 21--28
                Donald L. Shell   Corrigendum: ``Optimizing the Polyphase
                                  Sort'' . . . . . . . . . . . . . . . . . 28--28
              G. I. McCalla and   
                  J. R. Sampson   MUSE: A Model to Understand Simple
                                  English  . . . . . . . . . . . . . . . . 29--40
                  R. I. Shrager   Quadratic programming for nonlinear
                                  regression . . . . . . . . . . . . . . . 41--45
                   H. E. Salzer   Ordering
                                  +or-f(+or-f(+or-f(\ldots+or-f(x)\ldots))) when f(x) is positive monotonic  45--46
                   B. Einarsson   ACM Algorithm 418: Calculation of
                                  Fourier Integrals  . . . . . . . . . . . 47--48

Communications of the ACM
Volume 15,  Number 2, February, 1972

                    David Pager   A Proposal for a Computer-Based
                                  Interactive Scientific Community . . . . 71--75
                  C. M. Eastman   Preliminary report on a system for
                                  general space planning . . . . . . . . . 76--87
               W. A. Martin and   
                     D. N. Ness   Optimizing Binary Trees Grown with a
                                  Storing Algorithm  . . . . . . . . . . . 88--93
            A. E. Oldehoeft and   
                 M. H. Halstead   Maximum computing power and cost factors
                                  in the centralization problem  . . . . . 94--96
              M. A. Jenkins and   
                    J. F. Traub   ACM Algorithm 419: Zeros of a Complex
                                  Polynomial . . . . . . . . . . . . . . . 97--99
                  H. Williamson   ACM Algorithm 420: Hidden-Line Plotting
                                  Program  . . . . . . . . . . . . . . . . 100--103
                   J. A. Moorer   Music and computer composition . . . . . 104--113
                Ivan Flores and   
                  George Madpis   Corrigendum: ``Average Binary Search
                                  Length for Dense Ordered Lists'' . . . . 113--113
             Richard Gordon and   
                Gabor T. Herman   Corrigendum: ``Reconstruction of
                                  Pictures from Their Projections''  . . . 113--113

Communications of the ACM
Volume 15,  Number 3, March, 1972

                      Anonymous   Papers from the 3rd ACM symposium on
                                  operating systems principles . . . . . .   ??
               D. G. Bobrow and   
            J. D. Burchfiel and   
               D. L. Murphy and   
                R. S. Tomlinson   TENEX, A Paged Time-Sharing System for
                                  the PDP-10 . . . . . . . . . . . . . . . 135--143
                   B. H. Liskov   The Design of the Venus Operating System 144--149
              R. Stockton Gains   An operating system based on the concept
                                  of a supervisory computer  . . . . . . . 150--156
       Michael D. Schroeder and   
              Jerome H. Saltzer   A Hardware Architecture for Implementing
                                  Protection Rings . . . . . . . . . . . . 157--170
              A. Nico Habermann   Synchronization of Communicating
                                  Processes  . . . . . . . . . . . . . . . 171--176
             Toby J. Teorey and   
               Tad B. Pinkerton   A Comparative Analysis of Disk
                                  Scheduling Policies  . . . . . . . . . . 177--184
         E. G. Coffman, Jr. and   
                T. A. Ryan, Jr.   A study of storage partitioning using a
                                  mathematical model of locality . . . . . 185--190
           Peter J. Denning and   
             Stuart C. Schwartz   Properties of the working-set model  . . 191--198

Communications of the ACM
Volume 15,  Number 4, April, 1972

               R. W. Conway and   
              W. L. Maxwell and   
                   H. L. Morgan   On the Implementation of Security
                                  Measures in Information Systems  . . . . 211--220
                   D. C. Walden   A system for interprocess communication
                                  in a resource sharing computer network   221--230
               N. M. Herbst and   
                     P. M. Will   An experimental laboratory for pattern
                                  recognition and signal processing  . . . 231--244
              Yutaka Matsushita   Hidden lines elimination for a rotating
                                  object . . . . . . . . . . . . . . . . . 245--252
                    S. M. Chase   An implemented graph algorithm for
                                  winning Shannon Switching Games  . . . . 253--256
                E. Horowitz and   
               H. L. Morgan and   
                     A. C. Shaw   Computers and Society: A Proposed Course
                                  for Computer Scientists  . . . . . . . . 257--261
                        H. Kuki   Complex gamma function with error
                                  control  . . . . . . . . . . . . . . . . 262--267
                    C. B. Moler   Matrix Computations with Fortran and
                                  Paging . . . . . . . . . . . . . . . . . 268--270
                   Hirondo Kuki   ACM Algorithm 421: Complex Gamma
                                  Function with Error Control  . . . . . . 271--272
               V. K. M. Whitney   ACM Algorithm 422: Minimal Spanning Tree 273--274
                    C. B. Moler   ACM Algorithm 423: Linear Equation
                                  Solver . . . . . . . . . . . . . . . . . 274--274
                   D. C. Walden   A Note on Cheney's Nonrecursive
                                  List-Compacting Algorithm  . . . . . . . 275--275
                       T. C. Hu   A Comment on the Double-Chained Tree . . 276--276

Communications of the ACM
Volume 15,  Number 5, May, 1972

                James K. Mullin   An Improved Indexed-Sequential Access
                                  Method Using Hashed Overflow . . . . . . 301--307
              A. Bensoussan and   
              C. T. Clingen and   
                    R. C. Daley   The Multics Virtual Memory: Concepts and
                                  Design . . . . . . . . . . . . . . . . . 308--318
                R. D. Christman   MUX, a simple approach to on-line
                                  computing  . . . . . . . . . . . . . . . 319--329
                David L. Parnas   A technique for software module
                                  specification with examples  . . . . . . 330--336
            W. Morven Gentleman   Implementing Clenshaw-Curtis quadrature.
                                  I. Methodology and experience  . . . . . 337--342
            W. Morvin Gentleman   Implementing Clenshaw-Curtis quadrature.
                                  II. Computing the cosine transformation  343--346
               D. Greenspan and   
                     D. Schultz   Fast finite-difference solution of
                                  biharmonic problems  . . . . . . . . . . 347--350
                   C. B. Dunham   Minimax nonlinear approximation by
                                  approximation on subsets . . . . . . . . 351--351
                 Richard Harter   The Optimality of Winograd's Formula . . 352--352
                W. M. Gentleman   ACM Algorithm 424: Clenshaw-Curtis
                                  Quadrature . . . . . . . . . . . . . . . 353--355
                R. L. Hurst and   
                     R. E. Knop   ACM Algorithm 425: Generation of Random
                                  Correlated Normal Variables  . . . . . . 355--357
                        C. Bron   ACM Algorithm 426: Merge Sort Algorithm  357--358
                        P. Linz   ACM Algorithm 427: Fourier Cosine
                                  Integral . . . . . . . . . . . . . . . . 358--360
                     J. M. Yohe   ACM Algorithm 428: Hu-Tucker Minimum
                                  Redundancy Alphabetic Coding Method  . . 360--362
               R. L. Ashenhurst   A report of the ACM curriculum committee
                                  on computer education for management.
                                  Curriculum recommendations for graduate
                                  professional programs in information
                                  systems  . . . . . . . . . . . . . . . . 363--398

Communications of the ACM
Volume 15,  Number 6, June, 1972

                  J. Blatny and   
                S. R. Clark and   
                   T. A. Rourke   On the optimization of performance of
                                  time-sharing systems by simulation . . . 411--420
                   T. R. Spacek   A proposal to establish a pseudo virtual
                                  memory via writable overlays . . . . . . 421--426
                 P. Gilbert and   
                 W. J. Chandler   Interference between Communicating
                                  Parallel Processes . . . . . . . . . . . 427--437
                   J. F. Gimpel   Blocks-a new datatype for SNOBOL 4 . . . 438--447
                David F. Martin   A Boolean matrix method for the
                                  computation of linear precedence
                                  functions  . . . . . . . . . . . . . . . 448--454
             Robert T. O'Reagan   Computer Assigned Codes from Verbal
                                  Responses  . . . . . . . . . . . . . . . 455--459
                      K. Iguchi   A starting method for solving nonlinear
                                  Volterra integral equations of the
                                  second kind  . . . . . . . . . . . . . . 460--461
                        I. Pohl   A Sorting Problem and Its Complexity . . 462--464
                   K. S. Kolbig   Certification of algorithm 363 (complex
                                  error function)  . . . . . . . . . . . . 465--466
                    H. Niessner   Remark on algorithm 343 (Eigenvalues and
                                  eigenvectors of a real general matrix)   466--466
                    L. G. Proll   Remark on ``ACM Algorithm 370 (General
                                  random number generator) [G5]''  . . . . 467--468
                  G. F. Schrack   Remark on algorithm 381 (Random vectors
                                  uniform in solid angle)  . . . . . . . . 468--468
                  A. H. J. Sale   Remark on algorithm 393 (Special series
                                  summation with arbitrary precision)  . . 468--469
                   B. Einarsson   Remark on algorithm 418 (Calculation of
                                  Fourier integrals) . . . . . . . . . . . 469--469
              S. C. Johnson and   
                B. W. Kernighan   Remark on algorithm 397 (An integer
                                  programming problem) . . . . . . . . . . 469--469
                 Abraham Kandel   Computer Science --- A Vicious Circle    470--471
                  E. B. Koffman   Individualizing instruction in a
                                  generative CAI tutor . . . . . . . . . . 472--473
              E. N. Houstis and   
             W. F. Mitchell and   
                     J. R. Rice   ACM Algorithm 438: Product Type
                                  Two-point Gauss-Legendre-Simpson's
                                  Integration  . . . . . . . . . . . . . . 1071

Communications of the ACM
Volume 15,  Number 7, July, 1972

                     Lee Revens   The first twenty-five years ACM
                                  1947--1962 . . . . . . . . . . . . . . . 485--490
                  Eric A. Weiss   Publications in computing: an informal
                                  review . . . . . . . . . . . . . . . . . 491--497
                   A. P. Ershov   Aesthetics and the Human Factor in
                                  Programming  . . . . . . . . . . . . . . 501--505
                      Anonymous   As the industry sees it  . . . . . . . . 506--517
               Michael A. Arbib   Toward an Automata Theory of Brains  . . 521--527
                Zohar Manna and   
                 Jean Vuillemin   Fixpoint Approach to the Theory of
                                  Computation  . . . . . . . . . . . . . . 528--536
                    J. F. Traub   Numerical Mathematics and Computer
                                  Science  . . . . . . . . . . . . . . . . 537--541
            David F. Shanno and   
                  Roman L. Weil   Management science: a view from
                                  nonlinear programming  . . . . . . . . . 542--549
                     Joel Moses   Toward a General Theory of Special
                                  Functions  . . . . . . . . . . . . . . . 550--556 (or 550--554??)
                   C. C. Foster   A view of computer architecture  . . . . 557--565
                   A. G. Fraser   On the interface between computers and
                                  data communications systems  . . . . . . 566--573
              Per Brinch Hansen   Structured Multiprogramming  . . . . . . 574--578
                    W. C. Lynch   Operating system performance . . . . . . 579--585
                S. R. Kimbleton   The role of computer system models in
                                  performance evaluation . . . . . . . . . 586--590
                     Saul Rosen   Programming Systems and Languages
                                  (1965--1975) . . . . . . . . . . . . . . 591--600
                 Jean E. Sammet   Programming Languages: History and
                                  Future . . . . . . . . . . . . . . . . . 601--610
                  L. D. Fosdick   The production of better mathematical
                                  software . . . . . . . . . . . . . . . . 611--617
                   D. G. Bobrow   Requirements for Advanced Programming
                                  Systems for List Processing  . . . . . . 618--627
             Charles W. Bachman   The Evolution of Storage Structures  . . 628--634
                     J. R. Rice   On the present and future of scientific
                                  computation  . . . . . . . . . . . . . . 637--639
             Robert I. Benjamin   A generational perspective of
                                  information system development . . . . . 640--643
                  S. Y. Sedelow   Language analysis in the humanities  . . 644--647
                     K. L. Zinn   Computers in the instructional process:
                                  directions for research and development  648--651
                  G. M. Sturman   Computers and urban society  . . . . . . 652--657
                      G. Salton   Dynamic document processing  . . . . . . 658--668
                Donald E. Knuth   Ancient Babylonian algorithms  . . . . . 671--677
                F. L. Bauer and   
                 H. Wossner and   
                    Konrad Zuse   The ``Plankalkul'' of Konrad Zuse: a
                                  forerunner of today's programming
                                  languages. . . . . . . . . . . . . . . . 678--685
             Richard E. Sprague   A Western View of Computer History . . . 686--692
                   Franz L. Alt   Archaeology of computers ---
                                  reminiscences, 1945--1947  . . . . . . . 693--694
                 A. Borodin and   
                  C. C. Gotlieb   Computers and employment . . . . . . . . 695--702

Communications of the ACM
Volume 15,  Number 8, August, 1972

                John G. Herriot   In memory of George E. Forsythe  . . . . 719--720
                Donald E. Knuth   George Forsythe and the development of
                                  Computer Science . . . . . . . . . . . . 721--726
                    David Crowe   Generating parsers for affix grammars.
                                  Collection of articles in honor of
                                  George E. Forsythe (ACM Student
                                  Competition Award Papers)  . . . . . . . 728--734
           Robert E. Helbig and   
             Patrick K. Orr and   
             Robert R. Roediger   Political Redistricting by Computer  . . 735--741
             Arthur J. Benjamin   Extensible Editor for a Small Machine
                                  with Disk Storage  . . . . . . . . . . . 742--747
            Robert F. Rosin and   
             Gideon Frieder and   
       Richard H. Eckhouse, Jr.   Environment for Research in
                                  Microprogramming and Emulation . . . . . 748--760
                 P. H. Oden and   
                  G. S. Shedler   A Model of Memory Contention in a Paging
                                  Machine  . . . . . . . . . . . . . . . . 761--771
            H. J. Bernstein and   
                  H. T. Gladwin   Compiling fixed-point multiplications    772--772
             W. L. van der Poel   Comment on the composition of semantics
                                  in Algol 68  . . . . . . . . . . . . . . 772--772
           James H. Morris, Jr.   A Bonus from van Wijngaarden's Device    773--773
                    P. R. Jones   Comment on average binary search length  774--774
             Ronald C. Read and   
                      K. Harada   A note on the generation of rosary
                                  permutations. With a response by K.
                                  Harada . . . . . . . . . . . . . . . . . 775--775
                      W. Squire   ACM Algorithm 429: Localization of the
                                  Roots of a Polynomial  . . . . . . . . . 776--777
           P. W. Purdom Jr. and   
                    E. F. Moore   ACM Algorithm 430: Immediate
                                  Predominators in a Directed Graph  . . . 777--778

Communications of the ACM
Volume 15,  Number 9, September, 1972

               K. N. Levitt and   
                    W. H. Kautz   Cellular Arrays for the Solution of
                                  Graph Problems . . . . . . . . . . . . . 789--801
                 Sakti P. Ghosh   File Organization --- The Consecutive
                                  Retrieval Property . . . . . . . . . . . 802--808
                     M. Mor and   
                      T. Lamdan   A New Approach to Automatic Scanning of
                                  Contour Maps . . . . . . . . . . . . . . 809--812
                Paul L. Richman   Automatic Error Analysis for Determining
                                  Precision  . . . . . . . . . . . . . . . 813--817
                   A. Ravindran   ACM Algorithm 431: A Computer Routine
                                  for Quadratic and Linear Programming
                                  Problems . . . . . . . . . . . . . . . . 818--820
              R. H. Bartels and   
                  G. W. Stewart   ACM Algorithm 432: Solution of the
                                  Matrix Equation
                                  ${\bf{A}}x+x{\bf{B}}={\bf{C}}$ . . . . . 820--826
                  E. S. Deutsch   Thinning Algorithms on Rectangular,
                                  Hexagonal, and Triangular Arrays . . . . 827--837
                     J. Gregory   A Comparison of Floating Point Summation
                                  Methods  . . . . . . . . . . . . . . . . 838--838
                Hatem M. Khalil   The eigenproblem of block tridiagonal
                                  matrices . . . . . . . . . . . . . . . . 839--839
               D. L. Parnas and   
            A. N. Habermann and   
                     R. C. Holt   Comment on Deadlock Prevention Method    840--841
              R. Rubinstein and   
                     J. Feldman   A controller for a Braille terminal  . . 841--842
                      K. C. Tan   On Foster's Information Storage and
                                  Retrieval Using AVL Trees  . . . . . . . 843--843

Communications of the ACM
Volume 15,  Number 10, October, 1972

                 E. W. Dijkstra   The Humble Programmer  . . . . . . . . . 859--866
                James B. Morris   Demand Paging Through Utilization of
                                  Working Sets on the Maniac II  . . . . . 867--872
               J. H. Ahrens and   
                      U. Dieter   Computer Methods for Sampling from the
                                  Exponential and Normal Distributions . . 873--882
              Richard J. Hanson   Integral Equations of Immunology . . . . 883--890
          Robert F. Simmons and   
                Jonathan Slocum   Generating English Discourse from
                                  Semantic Networks  . . . . . . . . . . . 891--905
                     Gert Dathe   Conversion of Decision Tables by Rule
                                  Mask Method without Rule Mask  . . . . . 906--909
               W. D. Frazer and   
                     C. K. Wong   Sorting by Natural Selection . . . . . . 910--913
                   A. P. Ershov   Corrigendum: ``Aesthetics and the Human
                                  Factor in Programming''  . . . . . . . . 913--913
                       H. Akima   ACM Algorithm 433: Interpolation and
                                  Smooth Curve Fitting Based on Local
                                  Procedures . . . . . . . . . . . . . . . 914--918

Communications of the ACM
Volume 15,  Number 11, November, 1972

                    Phyllis Fox   Comparative Study of Computer Programs
                                  for Integrating Differential Equations   941--948
             Michael A. Malcolm   Algorithms to Reveal Properties of
                                  Floating-Point Arithmetic  . . . . . . . 949--951
             Merrell L. Patrick   A Highly Parallel Algorithm for
                                  Approximating All Zeros of a Polynomial
                                  with Only Real Zeros . . . . . . . . . . 952--955
               Henry F. Ledgard   Model for Type Checking --- with an
                                  Application to Algol 60  . . . . . . . . 956--966
                Peter Henderson   Derived Semantics for Some Programming
                                  Language Constructs  . . . . . . . . . . 967--973
                    M. Verhelst   Conversion of Limited-Entry Decision
                                  Tables to Optimal and Near-Optimal
                                  Flowcharts: Two New Algorithms . . . . . 974--980
                  H. D. Baecker   Garbage Collection for Virtual Memory
                                  Computer Systems . . . . . . . . . . . . 981--986
            John S. Ramberg and   
             Bruce W. Schmeiser   Approximate Method for Generating
                                  Symmetric Random Variables . . . . . . . 987--990
                    D. L. March   ACM Algorithm 434: Exact Probabilities
                                  for ${R\times{C}}$ Contingency Tables    991--992
                   W. Fullerton   ACM Algorithm 435: Modified Incomplete
                                  Gamma Function . . . . . . . . . . . . . 993--995
                  V. Y. Lum and   
                  P. S. T. Yuen   Additional results on key-to-address
                                  transform techniques: a fundamental
                                  performance study on large existing
                                  formatted files  . . . . . . . . . . . . 996--997
                     S. Kennedy   A note on optimal doubly-chained trees   997--998
        Murray A. Eisenberg and   
             Michael R. McGuire   Further comments on Dijkstra's
                                  concurrent programming control problem   999--999
                  S. W. Smoliar   Comments on Moorer's Music and computer
                                  composition  . . . . . . . . . . . . . . 1000--1001

Communications of the ACM
Volume 15,  Number 12, December, 1972

        J. Richard Phillips and   
                    H. C. Adams   Dynamic Partitioning for Array Languages 1023--1032
                   R. Bayer and   
                    C. Witzgall   Index Ranges for Matrix Calculi  . . . . 1033--1039
                 Jay Earley and   
                Paul Caizergues   Method for Incrementally Compiling
                                  Languages with Nested Statement
                                  Structure  . . . . . . . . . . . . . . . 1040--1044
                Fabrizio Luccio   Weighted Increment Linear Search for
                                  Scatter Tables . . . . . . . . . . . . . 1045--1047
                 D. R. Barr and   
                   N. L. Slezak   A comparison of multivariate normal
                                  generators . . . . . . . . . . . . . . . 1048--1049
                 John Moore and   
              Prentiss Robinson   New Method for the Solution of the
                                  Cauchy Problem for Parabolic Equations   1050--1052
                   D. L. Parnas   On the Criteria to Be Used in
                                  Decomposing Systems into Modules . . . . 1053--1058
                    P. J. Brown   Levels of Language for Portable Software 1059--1062
            Stephen Sherman and   
        Forest Baskett, III and   
                   J. C. Browne   Trace-Driven Modeling and Analysis of
                                  CPU Scheduling in a Multiprogramming
                                  System . . . . . . . . . . . . . . . . . 1063--1069
                   W. R. Boland   ACM Algorithm 436: Product Type
                                  Trapezoidal Integration  . . . . . . . . 1070--1070
                   W. R. Boland   ACM Algorithm 437: Product Type
                                  Simpson's Integration  . . . . . . . . . 1070--1071
                   W. R. Boland   ACM Algorithm 439: Product Type
                                  Three-point Gauss-Legendre-Simpson's
                                  Integration  . . . . . . . . . . . . . . 1072

Communications of the ACM
Volume 15,  Number 2, February, 1973

           Peter J. Denning and   
             Stuart C. Schwartz   Corrigendum: ``Properties of the
                                  working-set model''  . . . . . . . . . . 191--198

Communications of the ACM
Volume 16,  Number 1, January, 1973

                  G. S. Shedler   A Queuing Model of a Multiprogrammed
                                  Computer with a Two-Level Storage System 3--10
                    Carter Bays   The Reallocation of Hash-Coded Tables    11--14
           James H. Morris, Jr.   Protection in Programming Languages  . . 15--21
             Yoichi Muraoka and   
                  David J. Kuck   On the Time Required for a Sequence of
                                  Matrix Products  . . . . . . . . . . . . 22--26
                E. B. James and   
                D. P. Partridge   Adaptive Correction of Program
                                  Statements . . . . . . . . . . . . . . . 27--37
                  P. L. Richman   Variable-Precision Exponentiation  . . . 38--40
                 C. R. Crawford   Reduction of a Band-Symmetric
                                  Generalized Eigenvalue Problem . . . . . 41--44
               S. E. Blount and   
                        L. Fein   The practical aspect of computer science
                                  education --- discussion . . . . . . . . 45--46
                        C. Bays   A note on when to chain overflow items
                                  within a direct-access table . . . . . . 46--47
                   M. S. Atkins   Mutual recursion in Algol 60 using
                                  restricted compilers . . . . . . . . . . 47--48
                 L. J. Gallaher   ACM Algorithm 440: A Multidimensional
                                  Monte Carlo Quadrature with Adaptive
                                  Stratified Sampling  . . . . . . . . . . 49--50
                     R. E. Knop   ACM Algorithm 441: Random samples from
                                  the dipole distribution [G5] . . . . . . 51--51
                 G. W. Hill and   
                    A. W. Davis   ACM Algorithm 442: Normal deviate [S14]  51--52

Communications of the ACM
Volume 16,  Number 2, February, 1973

                  R. D. Merrill   Representation of Contours and Regions
                                  for Efficient Computer Search  . . . . . 69--82
         S. Crespi-Reghizzi and   
            M. A. Melkanoff and   
                     L. Lichten   The Use of Grammatical Inference for
                                  Designing Programming Languages  . . . . 83--90
                   J. F. Gimpel   A Theory of Discrete Patterns and Their
                                  Implementation in SNOBOL4  . . . . . . . 91--100
                       J. Rokne   Automatic Errorbounds for Simple Zeros
                                  of Analytic Functions  . . . . . . . . . 101--104
               Richard P. Brent   Reducing the Retrieval Time of Scatter
                                  Storage Techniques . . . . . . . . . . . 105--109
           Robert M. Graham and   
      Gerald J. Clancy, Jr. and   
               David B. DeVaney   A software design and evaluation system  110--116
                   R. M. Balzer   An overview of the ISPL computer system
                                  design . . . . . . . . . . . . . . . . . 117--122
              F. N. Fritsch and   
               R. E. Shafer and   
                  W. P. Crowley   ACM Algorithm 443: Solution of the
                                  Transcendental Equation $w e^w = x$  . . 123--124

Communications of the ACM
Volume 16,  Number 3, March, 1973

         Richard H. Austing and   
                Gerald L. Engel   A Computer Science Course Program for
                                  Small Colleges . . . . . . . . . . . . . 139--147
               Robert A. Wagner   Common Phrases and Minimum-Space Text
                                  Storage  . . . . . . . . . . . . . . . . 148--152
                Y. Feinroth and   
            E. Franceschini and   
                   M. Goldstein   Telecommunications Using a Front-End
                                  Minicomputer . . . . . . . . . . . . . . 153--160
                Charles D. Pack   The Effects of Multiplexing on a
                                  Computer-Communications System . . . . . 161--168
          Richard W. Conway and   
               Thomas R. Wilcox   Design and Implementation of Diagnostic
                                  Compiler for PL/I  . . . . . . . . . . . 169--179
                   H. E. Salzer   Gray code and the +or-sign sequence when
                                  +or-f(+or-f(+or-f( . . +or-f(x) . . .)))
                                  is ordered . . . . . . . . . . . . . . . 180--180
              Abraham Bookstein   On Harrison's Substring Testing
                                  Technique  . . . . . . . . . . . . . . . 180--181
                    W. H. Payne   Graduate Education: The Ph.D. Glut . . . 181--182
                   R. A. Wagner   ACM Algorithm 444: An Algorithm for
                                  Extracting Phrases in a Space-Optimal
                                  Fashion  . . . . . . . . . . . . . . . . 183--185
                  Shi-Kuo Chang   ACM Algorithm 445: Binary Pattern
                                  Reconstruction from Projections  . . . . 185--186
                         J. Lau   Binary pattern reconstruction from
                                  projections  . . . . . . . . . . . . . . 186--186

Communications of the ACM
Volume 16,  Number 4, April, 1973

                 A. Hassitt and   
          J. W. Lageschulte and   
                     L. E. Lyon   Implementation of a High Level Language
                                  Machine  . . . . . . . . . . . . . . . . 199--212
               John G. Williams   Asymmetric Memory Hierarchies  . . . . . 213--222
                    H. Kuki and   
                     W. J. Cody   A Statistical Study of the Accuracy of
                                  Floating Point Number Systems  . . . . . 223--230
             W. A. Burkhard and   
                   R. M. Keller   Some Approaches to Best-Match File
                                  Searching  . . . . . . . . . . . . . . . 230--236
       James P. Strong, III and   
               Azriel Rosenfeld   A region coloring technique for scene
                                  analysis . . . . . . . . . . . . . . . . 237--246
      Juan Rodriguez-Rosell and   
              Jean-Pierre Dupuy   The design, implementation, and
                                  evaluation of a working set dispatcher   247--253
                     R. Broucke   ACM Algorithm 446: Ten Subroutines for
                                  the Manipulation of Chebyshev Series . . 254--256
              L. C. Ragland and   
                     D. I. Good   Greatest common divisor of $n$ integers
                                  and multipliers  . . . . . . . . . . . . 257--257

Communications of the ACM
Volume 16,  Number 5, May, 1973

                    David Pager   On the Problem of Communicating Complex
                                  Information  . . . . . . . . . . . . . . 275--281
                   David W. Low   Programming by Questionnaire: an
                                  Effective Way to Use Decision Tables . . 282--286
              P. J. H. King and   
                  R. G. Johnson   Some Comments on the Use of Ambiguous
                                  Decision Tables and Their Conversion to
                                  Computer Programs  . . . . . . . . . . . 287--290
                   John Salasin   Hierarchical Storage in Information
                                  Retrieval  . . . . . . . . . . . . . . . 291--295
              D. G. Corneil and   
              C. C. Gotlieb and   
                      Y. M. Lee   Minimal Event-Node Network of Project
                                  Precedence Relations . . . . . . . . . . 296--298
              Andrew Mercer and   
               Azriel Rosenfeld   An array grammar programming system  . . 299--305
             Edward M. Reingold   A Nonrecursive List Moving Algorithm . . 305--307
                         H. Vos   Coulomb wave functions . . . . . . . . . 308--309
                       G. Bayer   Maxflow  . . . . . . . . . . . . . . . . 309--309
                B. Holmgren and   
                    A. Kolm and   
                   D. Obradovic   Minit algorithm for linear programming   310--310
                   D. Obradovic   Minit algorithm for linear programming   310--310
                   J. A. Howell   Exact solution of linear equations using
                                  residue arithmetic . . . . . . . . . . . 311--311
                  A. H. J. Sale   A sparse matrix package  . . . . . . . . 311--311
                  R. E. Wheeler   Increasing the efficiency of quicksort   311--311
                      M. K. Roy   Reflection-free permutations, rosary
                                  permutations and adjacent transposition
                                  algorithms . . . . . . . . . . . . . . . 312--312
                 C. H. McMorrow   Concerning music and computer
                                  composition in computational linguistics 313--313
                R. L. Wexelblat   Another comment on computer music  . . . 313--314
                   R. G. Estell   A comment on the practical aspects of
                                  computer science education . . . . . . . 314--315
               Roger Fajman and   
                   John Borgelt   WYLBUR, An Interactive Text Editing and
                                  Remote Job Entry System  . . . . . . . . 314--322
              Dennis J. Frailey   A Practical Approach to Managing
                                  Resources and Avoiding Deadlocks . . . . 323--329

Communications of the ACM
Volume 16,  Number 6, June, 1973

                   R. G. Hamlet   Efficient multiprogramming resource
                                  allocation and accounting  . . . . . . . 337--342
                 E. Gelenbe and   
         J. C. A. Boekhorst and   
               J. L. W. Kessels   Minimizing wasted space in partitioned
                                  segmentation . . . . . . . . . . . . . . 343--349
                     J. C. Hill   Synchronizing processors with
                                  memory-content-generated interrupts  . . 350--351
            Harold S. Stone and   
               Samuel F. Fuller   On the Near-Optimality of the
                                  Shortest-Latency-Time-First Drum
                                  Scheduling Discipline  . . . . . . . . . 352--353
              P. F. Stockhausen   Adapting optimal code generation for
                                  arithmetic expressions to the
                                  instruction sets available on
                                  present-day computers  . . . . . . . . . 353--354
                     R. F. Ling   A computer generated aid for cluster
                                  analysis . . . . . . . . . . . . . . . . 355--361
                Ben Shneiderman   Optimum Data Base Reorganization Points  362--365
                      H. Strunz   The development of decision tables via
                                  parsing of complex decision situations   366--369
                  James R. Bell   Threaded Code  . . . . . . . . . . . . . 370--372
                J. Hopcroft and   
                      R. Tarjan   ACM Algorithm 447: Efficient Algorithms
                                  for Graph Manipulation . . . . . . . . . 372--378
                   T. Beyer and   
                D. F. Swinehart   ACM Algorithm 448: Number of
                                  Multiply-Restricted Partitions . . . . . 379--379
                J. Ferguson and   
                   P. A. Staley   Least squares piecewise cubic curve
                                  fitting  . . . . . . . . . . . . . . . . 380--382
                  W. D. Hoskins   Cubic spline solutions to fourth-order
                                  boundary value problems  . . . . . . . . 382--385
               Franz L. Alt and   
               Judith Yuni Kirk   Computer Photocomposition of Technical
                                  Text . . . . . . . . . . . . . . . . . . 386--391

Communications of the ACM
Volume 16,  Number 7, July, 1973

               Richard L. Nolan   Managing the Computer Resource: Stage
                                  Hypothesis . . . . . . . . . . . . . . . 399--405
                    J. C. Huang   A Note on Information Organization and
                                  Storage  . . . . . . . . . . . . . . . . 406--410
      Edward W. Kozdrowicki and   
               Dennis W. Cooper   COKO III: the Cooper-Koz Chess Program   411--427 (or 411--426??)
            John H. Howard, Jr.   Mixed Solutions for the Deadlock Problem 427--430
                   Erol Gelenbe   Distribution of a Program in Primary and
                                  Fast Buffer Storage  . . . . . . . . . . 431--434
                Robert F. Rosin   Teaching ``About Programming'' . . . . . 435--439
         F. Warren McFarlan and   
               Richard L. Nolan   Curriculum Recommendations for Graduate
                                  Professional Programs in Information
                                  Systems: Recommended Addendum on
                                  Information Systems Administration . . . 439--442 (or 439--441??)
                      A. Kandel   Computer Science --- Seminars for
                                  Undergraduates . . . . . . . . . . . . . 442--442
                 G. V. Bochmann   Multiple Exits from a Loop Without the
                                  GOTO . . . . . . . . . . . . . . . . . . 443--444
             Patrick A. V. Hall   Equivalence Between AND/OR Graphs and
                                  Context-Free Grammars  . . . . . . . . . 444--445
                       F. Fiala   ACM Algorithm 449: Solution of Linear
                                  Programming Problems in 0-1 Variables    445--448 (or 445--447??)
                B. W. Kernighan   Remark on ``Algorithm 422: Minimal
                                  Spanning Tree''  . . . . . . . . . . . . 448--448
           I. D. G. Macleod and   
                  A. M. Collins   Hidden-line plotting program . . . . . . 448--448
                  P. J. Nikolai   DIFSUB for solution of ordinary
                                  differential equations . . . . . . . . . 448--448

Communications of the ACM
Volume 16,  Number 8, August, 1973

               Michael H. Smith   A learning program which plays
                                  partnership dominoes . . . . . . . . . . 462--467
                B. J. MacLennan   Fen --- an Axiomatic Basis for Program
                                  Semantics  . . . . . . . . . . . . . . . 468--474
                  David Misunas   Petri Nets and Speed Independent Design  474--482 (or 474--481??)
                 M. MacHura and   
                      A. Mulawa   ACM Algorithm 450: Rosenbrock Function
                                  Minimization . . . . . . . . . . . . . . 482--483
                R. B. Goldstein   ACM Algorithm 451: Chi-Square Quantiles  483--485
                  C. N. Liu and   
                     D. T. Tang   ACM Algorithm 452: Enumerating
                                  Combinations of $m$ Out of $n$ Objects   485--485
                Robert Piessens   ACM Algorithm 453: Gaussian Quadrature
                                  Formulas for Bromwich's Integral . . . . 486--487
           J. A. Richardson and   
                  J. L. Kuester   ACM Algorithm 454: The Complex Method
                                  for Constrained Optimization . . . . . . 487--489
              G. Andrejkova and   
                       J. Vinar   Complex gamma function . . . . . . . . . 489--489
                R. M. De Morgan   Remark on ``Algorithm 357 [A1]: An
                                  Efficient Prime Number Generator'' . . . 489--489
                  R. P. Watkins   Graph plotter  . . . . . . . . . . . . . 489--490
                    J. G. Byrne   Hu-Tucker minimum redundancy alphabetic
                                  coding method  . . . . . . . . . . . . . 490--490
                     A. J. Good   Clenshaw-Curtis quadrature . . . . . . . 490--490
                 E. J. Williams   Localization of the roots of a
                                  polynomial . . . . . . . . . . . . . . . 490--490
                Zohar Manna and   
               Stephen Ness and   
                 Jean Vuillemin   Inductive Methods for Proving Properties
                                  of Programs  . . . . . . . . . . . . . . 491--502
             W. W. Peterson and   
                  T. Kasami and   
                      N. Tokura   On the Capabilities of While, Repeat,
                                  and Exit Statements  . . . . . . . . . . 503--512
               Caxton C. Foster   A Generalization of AVL Trees  . . . . . 513--517

Communications of the ACM
Volume 16,  Number 9, September, 1973

               Jeffrey P. Buzen   Computational Algorithms for Closed
                                  Queueing Networks with Exponential
                                  Servers  . . . . . . . . . . . . . . . . 527--531
               S. Ganapathy and   
                   V. Rajaraman   Information Theory Applied to the
                                  Conversion of Decision Tables to
                                  Computer Programs  . . . . . . . . . . . 532--539
            Alfonso F. Cardenas   Evaluation and Selection of File
                                  Organization --- A Model and a System    540--548
                    R. G. Casey   Design of Tree Structures for Efficient
                                  Querying . . . . . . . . . . . . . . . . 549--556
          Juan Rodriguez-Rosell   Empirical Working Set Behavior . . . . . 556--560
          Geoffrey W. Gates and   
             David A. Poplawski   A simple technique for structured
                                  variable lookup  . . . . . . . . . . . . 561--565
                M. V. Zelkowitz   Reversible Execution . . . . . . . . . . 566--566
         Robert E. Barnhill and   
               David T. Pilcher   Sard kernels for certain bivariate
                                  cubatures  . . . . . . . . . . . . . . . 567--571 (or 567--570??)
               D. B. Hunter and   
                 J. M. Williams   ACM Algorithm 455: Analysis of Skew
                                  Representations of the Symmetric Group   571--572
                 Zden\vek Fencl   ACM Algorithm 456: Routing Problem . . . 572--574
                  Coen Bron and   
                  Joep Kerbosch   ACM Algorithm 457: Finding All Cliques
                                  of an Undirected Graph . . . . . . . . . 575--577
                      M. K. Roy   Remark on ``Algorithm 323 [G6]:
                                  Generation of Permutations in
                                  Lexicographic Order''  . . . . . . . . . 577--578
                Mohit Kumar Roy   Remark on ``Algorithm 323 [G6]:
                                  Generation of Permutations in
                                  Lexicographic Order''  . . . . . . . . . 577--578
                 E. E. Lawrence   A sparse matrix package. I . . . . . . . 578--578
                  H. Williamson   Hidden-line plotting program . . . . . . 578--579
             H. B. Driessen and   
                E. W. LeM. Hunt   Localization of the roots of a
                                  polynomial . . . . . . . . . . . . . . . 579--579

Communications of the ACM
Volume 16,  Number 10, October, 1973

              John S. McGeachie   Multiple Terminals Under User Program
                                  Control in a Time-Sharing Environment    587--590
           Daniel G. Bobrow and   
                   Ben Wegbreit   A Model and Stack Implementation of
                                  Multiple Environments  . . . . . . . . . 591--603
                 Vincent Y. Lum   General Performance Analysis of
                                  Key-to-Address Transformation Methods
                                  Using an Abstract File Concept . . . . . 603--612
              Butler W. Lampson   A Note on the Confinement Problem  . . . 613--615
           Daniel S. Hirschberg   A Class of Dynamic Memory Allocation
                                  Algorithms . . . . . . . . . . . . . . . 615--618
               Barton G. Prieve   Using Page Residency to Select the
                                  Working Set Parameter  . . . . . . . . . 619--620
            Robert E. Millstein   Control Structures in Illiac IV Fortran  621--627
               P. D. Robers and   
                   S. S. Robers   ACM Algorithm 458: Discrete Linear
                                  ${L}_1$ Approximation by Interval Linear
                                  Programming  . . . . . . . . . . . . . . 629--631
                    M. M. Syslo   ACM Algorithm 459: The Elementary
                                  Circuits of a Graph  . . . . . . . . . . 632--633
             Paul E. Saylor and   
             James D. Sebastian   ACM Algorithm 460: Calculation of
                                  Optimum Parameters for Alternating
                                  Direction Implicit Procedures  . . . . . 633--635
            F. J. Burkowski and   
                  W. D. Hoskins   ACM Algorithm 461: Cubic Spline
                                  Solutions to a Class of Functional
                                  Differential Equations . . . . . . . . . 635--637
                 T. G. Donnelly   ACM Algorithm 462: Bivariate Normal
                                  Distribution . . . . . . . . . . . . . . 638--638
                   C. R. Lewart   ACM Algorithm 463: Algorithms SCALE1,
                                  SCALE2, and SCALE3 for Determination of
                                  Scales on Computer Generated Plots . . . 639--640

Communications of the ACM
Volume 16,  Number 11, November, 1973

             Charles W. Bachman   The Programmer as Navigator  . . . . . . 653--658
                    R. S. Fabry   Dynamic Verification of Operating System
                                  Decisions  . . . . . . . . . . . . . . . 659--668
             M. D. Mickunas and   
                V. B. Schneider   Parser-Generating System for
                                  Constructing Compressed Compilers  . . . 669--676
          B. W. Jordan, Jr. and   
                  R. C. Barrett   Scan Conversion Algorithm with Reduced
                                  Storage Requirements . . . . . . . . . . 676--682
            James R. Slagle and   
                Lewis M. Norton   Experiments with an Automatic
                                  Theorem-Prover Having Partial Ordering
                                  Inference Rules  . . . . . . . . . . . . 682--688
                  C. H. Reinsch   ACM Algorithm 464: Eigenvalues of a Real
                                  Symmetric Tridiagonal Matrix . . . . . . 689--689
                     G. W. Hill   ACM Algorithm 465: Student's $t$
                                  Frequency  . . . . . . . . . . . . . . . 690--690
                     G. Ehrlich   ACM Algorithm 466: Four Combinatorial
                                  Algorithms . . . . . . . . . . . . . . . 690--691
                     N. Brenner   ACM Algorithm 467: Matrix Transposition
                                  in Place . . . . . . . . . . . . . . . . 692--694
             T. N. L. Patterson   ACM Algorithm 468: Algorithm for
                                  Automatic Numerical Integration Over a
                                  Finite Interval  . . . . . . . . . . . . 694--699
                     C. Lam and   
                       J. McKay   ACM Algorithm 469: Arithmetic Over a
                                  Finite Field . . . . . . . . . . . . . . 699--699
           Peter J. Denning and   
                G. Scott Graham   A Note on Subexpression Ordering in the
                                  Execution of Arithmetic Expressions  . . 700--702
          Jerome A. Feldman and   
               James R. Low and   
                    R. P. Brent   Comment on Brent's scatter storage
                                  algorithm (and author's reply) . . . . . 703--703
                      E. Wegner   Tree-structured programs . . . . . . . . 704--705
              Herbert E. Salzer   A recurrence scheme for converting from
                                  one orthogonal expansion into another    705--707
                     F. Stenger   An algorithm for the approximate
                                  solution of Wiener-Hopf integral
                                  equations  . . . . . . . . . . . . . . . 708--710
                  L. W. Ehrlich   Solving the Biharmonic Equation in a
                                  Square: a Direct Versus a Semidirect
                                  Method . . . . . . . . . . . . . . . . . 711--714

Communications of the ACM
Volume 16,  Number 12, December, 1973

               J. Daniel Couger   Curriculum Recommendations for
                                  Undergraduate Programs in Information
                                  Systems  . . . . . . . . . . . . . . . . 727--749
            Edgar H. Sibley and   
               Robert W. Taylor   A Data Definition and Mapping Language   750--759
                     M. Kubicek   ACM Algorithm 470: Linear Systems with
                                  Almost Tridiagonal Matrix  . . . . . . . 760--761
                    W. Gautschi   ACM Algorithm 471: Exponential Integrals 761--763
              J. G. Herriot and   
                  C. H. Reinsch   ACM Algorithm 472: Procedures for
                                  Natural Spline Interpolation . . . . . . 763--768

Communications of the ACM
Volume 17,  Number 1, January, 1974

                        G. Lyon   Syntax-directed least-errors analysis
                                  for context-free languages: a practical
                                  approach . . . . . . . . . . . . . . . . 3--14
         Michael A. Malcolm and   
                    John Palmer   A Fast Method For Solving a Class of
                                  Tridiagonal Systems of Linear Equations  14--17
                       H. Akima   A method of bivariate interpolation and
                                  smooth surface fitting based on local
                                  procedures . . . . . . . . . . . . . . . 18--20
            Norman E. Gibbs and   
          William G. Poole, Jr.   Tridiagonalization by Permutations . . . 20--24
                    R. Piessens   ACM Algorithm 473: Computation of
                                  Legendre Series Coefficients . . . . . . 25--25
                       H. Akima   ACM Algorithm 474: Bivariate
                                  Interpolation and Smooth Surface Fitting
                                  Based on Local Procedures  . . . . . . . 26--31
         Ivan E. Sutherland and   
                Gary W. Hodgman   Reentrant Polygon Clipping . . . . . . . 32--42
              P. J. H. King and   
                  R. G. Johnson   Comments on the algorithms of Verhelst
                                  for the conversion of limited-entry
                                  decision tables to flowcharts (and
                                  author's reply)  . . . . . . . . . . . . 43--45
                  Gary D. Knott   A Numbering System for Combinations  . . 45--46
               H. C. Lucas, Jr.   A CRT report generating system . . . . . 47--48

Communications of the ACM
Volume 17,  Number 2, February, 1974

      James B. Rothnie, Jr. and   
                   Tomas Lozano   Attribute Based File Organization in a
                                  Paged Memory Environment . . . . . . . . 63--69
          B. W. Jordan, Jr. and   
                  R. C. Barrett   A cell organized raster display for line
                                  drawings . . . . . . . . . . . . . . . . 70--77
            John S. Ramberg and   
             Bruce W. Schmeiser   An Approximate Method for Generating
                                  Asymmetric Random Variables  . . . . . . 78--82
                 Leslie Lamport   The Parallel Execution of DO Loops . . . 83--93
               Henry F. Ledgard   Production Systems: or can we do better
                                  than BNF?  . . . . . . . . . . . . . . . 94--102
                   Ben Wegbreit   The Synthesis of Loop Predicates . . . . 102--112

Communications of the ACM
Volume 17,  Number 3, March, 1974

             K. Sreenivasan and   
                 A. J. Kleinman   On the Construction of a Representative
                                  Synthetic Workload . . . . . . . . . . . 127--133
               E. Balkovich and   
                    W. Chiu and   
                 L. Presser and   
                        R. Wood   Dynamic Memory Repacking . . . . . . . . 133--138
              Howard Lee Morgan   Optimal Space Allocation on Disk Storage
                                  Devices  . . . . . . . . . . . . . . . . 139--142
                  Rudolf Loeser   Some Performance Tests of ``Quicksort''
                                  and Descendants  . . . . . . . . . . . . 143--152
                      T. Wright   Visible surface plotting program . . . . 152--157 (or 152--155??)
               N. E. Bosten and   
                 E. L. Battiste   Incomplete beta ratio  . . . . . . . . . 156--157
              R. C. Barrett and   
              B. W. Jordan, Jr.   Scan Conversion Algorithms for a Cell
                                  Organized Raster Display . . . . . . . . 157--163
              A. Frank Ackerman   Quadratic Search for Hash Tables of Size
                                  $p^n$  . . . . . . . . . . . . . . . . . 164--164
                Harold S. Stone   A note on a combinatorial problem of
                                  Burnett and Coffman  . . . . . . . . . . 165--166
                  Fred T. Krogh   Efficient Implementation of a Variable
                                  Projection Algorithm for Nonlinear Least
                                  Squares Problems . . . . . . . . . . . . 167--169

Communications of the ACM
Volume 17,  Number 4, April, 1974

              Jerome H. Saltzer   A Simple Linear Model of Demand Paging
                                  Performance  . . . . . . . . . . . . . . 181--186
             M. A. Franklin and   
                    R. K. Gupta   Computation of Page Fault Probability
                                  from Program Transition Diagram  . . . . 186--191
                  John W. Boyse   Execution Characteristics of Programs in
                                  a Page-On-Demand System  . . . . . . . . 192--196
               Graham Smith and   
                  Ian M. Sefton   On Lions' Counter Example for Gotlieb's
                                  Method for the Construction of School
                                  Timetables . . . . . . . . . . . . . . . 196--197
                 Gary Lindstrom   Copying List Structures Using Bounded
                                  Workspace  . . . . . . . . . . . . . . . 198--202
                    Shimon Even   Parallelism in Tape-Sorting  . . . . . . 202--204
           H. C. Lucas, Jr. and   
           D. B. Montgomery and   
                 J. C. Larreche   A study of computer use in a graduate
                                  school of business . . . . . . . . . . . 205--206
              Peter Freeman and   
         Michael A. Malcolm and   
               William H. Payne   Graduate Education: The Ph.D. Glut:
                                  Response and Rebuttal  . . . . . . . . . 206--207
             T. D. Sterling and   
                  S. V. Pollack   Ideal teaching machines --- a solution
                                  to the pedagogic language problem  . . . 207--208
                 P. W. Abrahams   Some remarks on lookup of structured
                                  variables  . . . . . . . . . . . . . . . 209--210
                     A. Balfour   An alternative approach to mutual
                                  recursion in Algol 60 using restricted
                                  compilers  . . . . . . . . . . . . . . . 210--210
               R. C. T. Lee and   
                C. L. Chang and   
                R. J. Waldinger   An Improved Program-Synthesizing
                                  Algorithm and its Correctness  . . . . . 211--217
                    A. K. Cline   Scalar- and planar-valued curve fitting
                                  using splines under tension. I . . . . . 218--220
                    A. K. Cline   ACM Algorithm 476: Six Subprograms for
                                  Curve Fitting Using Splines Under
                                  Tension  . . . . . . . . . . . . . . . . 220--223 (or 220--221??)
                     G. Ehrlich   ACM Algorithm 477: Generator of
                                  Set-Partitions to Exactly ${R}$ Subsets  224--225
                   B. Einarsson   Solution of the transcendental equation
                                  we/sup w/=x  . . . . . . . . . . . . . . 225--225

Communications of the ACM
Volume 17,  Number 5, May, 1974

                      Mary Shaw   Reduction of Compilation Costs Through
                                  Language Contraction . . . . . . . . . . 245--250
                   Ben Wegbreit   The treatment of data types in EL1 . . . 251--264
               Robert A. Wagner   Order-$n$ Correction for Regular
                                  Languages  . . . . . . . . . . . . . . . 265--268
                  Nai Kuan Tsao   On the Distributions of Significant
                                  Digits and Roundoff Errors . . . . . . . 269--271
           M. C. Wunderlich and   
                J. L. Selfridge   Design for a Number Theory Package with
                                  an Optimized Trial Division Routine  . . 272--276
            W. M. Gentleman and   
                 S. B. Marovich   More on Algorithms that Reveal
                                  Properties of Floating Point Arithmetic
                                  Units  . . . . . . . . . . . . . . . . . 276--277
                 D. E. Gold and   
                     D. J. Kuck   A Model for Masking Rotational Latency
                                  by Dynamic Disk Allocation . . . . . . . 278--288

Communications of the ACM
Volume 17,  Number 6, June, 1974

              Jacques Cohen and   
                 Carl Zuckerman   Two Languages for Estimating Program
                                  Efficiency . . . . . . . . . . . . . . . 301--308
                L. Henschen and   
           Ross A. Overbeek and   
                         L. Wos   A Theorem-Proving Language for
                                  Experimentation  . . . . . . . . . . . . 308--314
                James F. Gimpel   The minimization of
                                  spatially-multiplexed character sets . . 315--318
               I. Barrodale and   
               F. D. K. Roberts   ACM Algorithm 478: Solution of an
                                  Overdetermined System of Equations in
                                  the ${L_1}$ Norm . . . . . . . . . . . . 319--320
                     R. L. Page   ACM Algorithm 479: A Minimal Spanning
                                  Tree Clustering Method . . . . . . . . . 321--323
                     B. Gaither   Hidden-line plotting program . . . . . . 324--324
                    R. Piessens   Calculation of Fourier integrals . . . . 324--324
                    R. Piessens   Modified Havie integration . . . . . . . 324--324
                 T. M. R. Ellis   Hidden-line plotting program . . . . . . 324--325
                     R. L. Page   Generation of random correlated normal
                                  variables  . . . . . . . . . . . . . . . 325--325
                  D. M. Boulton   Exact probabilities for R*C contingency
                                  tables . . . . . . . . . . . . . . . . . 326--326
                    W. D. Slysz   An evaluation of software in the social
                                  sciences . . . . . . . . . . . . . . . . 326--332
                 John Adams and   
                      John Gary   Compact Representation of Contour Plots
                                  for Phone Line Transmission  . . . . . . 333--336
                    W. Wulf and   
                   E. Cohen and   
                  W. Corwin and   
                   A. Jones and   
                   R. Levin and   
                 C. Pierson and   
                     F. Pollack   HYDRA: The Kernel of a Multiprocessor
                                  Operating System . . . . . . . . . . . . 337--345
              Ian J. Barton and   
           Susan E. Creasey and   
           Michael F. Lynch and   
               Michael J. Snell   An Information-Theoretic Approach to
                                  Text Searching in Direct Access Systems  345--350
                 Edward Minieka   On Computing Sets of Shortest Paths in a
                                  Graph  . . . . . . . . . . . . . . . . . 351--353

Communications of the ACM
Volume 17,  Number 7, July, 1974

          Dennis M. Ritchie and   
                   Ken Thompson   The UNIX Time-Sharing System . . . . . . 365--375
               Samuel H. Fuller   Minimal-Total-Processing Time Drum and
                                  Disk Scheduling Disciplines  . . . . . . 376--381
                   J. Bruno and   
         E. G. Coffman, Jr. and   
                       R. Sethi   Scheduling Independent Tasks To Reduce
                                  Mean Finishing Time  . . . . . . . . . . 382--387
              Jerome H. Saltzer   Protection and the Control of
                                  Information Sharing in Multics . . . . . 388--402
                    R. S. Fabry   Capability-Based Addressing  . . . . . . 403--412
            Gerald J. Popek and   
             Robert P. Goldberg   Formal Requirements for Virtualizable
                                  Third Generation Architectures . . . . . 412--421

Communications of the ACM
Volume 17,  Number 8, August, 1974

                     Bruce Hahn   A New Technique for Compression and
                                  Storage of Data  . . . . . . . . . . . . 434--436
          Arthur Evans, Jr. and   
         William Kantrowitz and   
                    Edwin Weiss   A User Authentication Scheme Not
                                  Requiring Secrecy in the Computer  . . . 437--442
                George B. Purdy   A High Security Log-in Procedure . . . . 442--445
       Theodore D. Friedman and   
               Lance J. Hoffman   Execution Time Requirements for
                                  Encipherment Programs  . . . . . . . . . 445--449
              G. A. Neufeld and   
                      J. Tartar   Graph Coloring Conditions for the
                                  Existence of Solutions to the Timetable
                                  Problem  . . . . . . . . . . . . . . . . 450--453
                 Leslie Lamport   A New Solution of Dijkstra's Concurrent
                                  Programming Problem  . . . . . . . . . . 453--455
               John C. Cavouras   On the Conversion of Programs to
                                  Decision Tables: Method and Objectives   456--462
                   T. Lyche and   
                L. L. Schumaker   ACM Algorithm 480: Procedures for
                                  Computing Smoothing and Interpolating
                                  Natural Splines  . . . . . . . . . . . . 463--467
                 K. C. Crandall   ACM Algorithm 481: Arrow to Precedence
                                  Network Transformation . . . . . . . . . 467--469
                 John McKay and   
                     E. Regener   ACM Algorithm 482: Transitivity Sets
                                  [G7] . . . . . . . . . . . . . . . . . . 470--470
                   A. H. Stroud   Gauss Harmonic Interpolation Formulas    471--475
           Rolf O. E. Lagerloef   Interpolation with Rounded Ramp
                                  Functions  . . . . . . . . . . . . . . . 476--479
                Forman S. Acton   Recurrence Relations for the Fresnel
                                  Integral
                                  $\int_0^\infty[\exp(-ct)dt/(t)^{1/2}(1+t^2)]$ and Similar Integrals  480--481

Communications of the ACM
Volume 17,  Number 9, September, 1974

                  I. M. Willers   A New Integration Algorithm for Ordinary
                                  Differential Equations Based on
                                  Continued Fraction Approximations  . . . 504--508
                  Oliver Aberth   A Precise Numerical Analysis Program . . 509--513
                 To-yat. Cheung   Interactive Graphic Display for Region
                                  Partitioning by Linear Programming . . . 513--516
               Mario Schkolnick   The Equivalence of Reducing Transition
                                  Languages and Deterministic Languages    517--519
                  S. L. Watkins   ACM Algorithm 483: Masked
                                  Three-Dimensional Plot Program with
                                  Rotations  . . . . . . . . . . . . . . . 520--523
                  K. H. Burrell   ACM Algorithm 484: Evaluation of the
                                  Modified Bessel Functions ${K}_0(z)$ and
                                  ${K}_1(z)$ for Complex Arguments . . . . 524--526
               H. D. Eidson and   
                L. L. Schumaker   ACM Algorithm 485: Computation of
                                  $g$-Splines via a Factorization Method   526--530
                  John W. Young   A First Order Approximation to the
                                  Optimum Checkpoint Interval  . . . . . . 530--531
                 Keith Shwayder   Extending the Information Theory
                                  Approach to Converting Limited-Entry
                                  Decision Tables to Computer Programs . . 532--537

Communications of the ACM
Volume 17,  Number 10, October, 1974

                 C. A. R. Hoare   Monitors: An Operating System
                                  Structuring Concept  . . . . . . . . . . 549--557
            Kenneth K. Shen and   
              James L. Peterson   A Weighted Buddy Method for Dynamic
                                  Storage Allocation . . . . . . . . . . . 558--568 (or 558--562??)
                D. R. Slutz and   
                  I. L. Traiger   A note on the calculation of average
                                  working set size . . . . . . . . . . . . 563--565
            Ben Shneiderman and   
              Peter Scheuermann   Structured Data Structures . . . . . . . 566--574
              R. H. Canaday and   
             R. D. Harrison and   
                 E. L. Ivie and   
                J. L. Ryder and   
                     L. A. Wehr   A Back-end Computer for Data Base
                                  Management . . . . . . . . . . . . . . . 575--583 (or 575--582??)
                 A. Charnes and   
                W. M. Raike and   
                J. D. Stutz and   
                  A. S. Walters   On Generation of Test Problems for
                                  Linear Programming Codes . . . . . . . . 583--587 (or 583--586??)
                     F. Veillon   ACM Algorithm 486: Numerical Inversion
                                  of Laplace Transform . . . . . . . . . . 587--589 (or 587--588??)
                   H. Koppelaar   Certification and remark on algorithm
                                  191  . . . . . . . . . . . . . . . . . . 589--590
                    L. G. Proll   A computer routine for quadratic and
                                  linear programming problems  . . . . . . 590--590
                  J. Klemes and   
                      J. Klemsa   Rosenbrock function minimization . . . . 590--591
                  Fred T. Krogh   Errata: ``Efficient Implementation of a
                                  Variable Projection Algorithm for
                                  Nonlinear Least Squares''  . . . . . . . 591--591
            Bruce Gilchrist and   
               Richard E. Weber   Enumerating Full-Time Programmers  . . . 592--593

Communications of the ACM
Volume 17,  Number 11, November, 1974

            Theodor D. Sterling   Guidelines for Humanizing Computerized
                                  Information Systems, A Report from
                                  Stanley House  . . . . . . . . . . . . . 609--613
               Domenico Ferrari   Improving Locality by Critical Working
                                  Sets . . . . . . . . . . . . . . . . . . 614--620
            Perry Lowell Miller   A locally-organized parser for spoken
                                  input  . . . . . . . . . . . . . . . . . 621--630
                  Gary M. Rader   Method for Composing Simple Traditional
                                  Music by Computer  . . . . . . . . . . . 631--638
            R. A. Freiburghouse   Register Allocation via Usage Counts . . 638--642
                 E. W. Dijkstra   Self-stabilizing Systems in Spite of
                                  Distributed Control  . . . . . . . . . . 643--644
                J. A. Brown and   
                      B. Werner   An on-site data management system
                                  application in field archaeology . . . . 644--646
                   D. R. Hanson   A simple technique for representing
                                  strings in Fortran IV  . . . . . . . . . 646--647
           C. J. Van Rijsbergen   The best-match problem in document
                                  retrieval  . . . . . . . . . . . . . . . 648--649
                    R. V. Evans   Multiple exits from a loop using neither
                                  GO TO nor labels . . . . . . . . . . . . 650--650

Communications of the ACM
Volume 17,  Number 12, December, 1974

                Donald E. Knuth   Computer Programming as an Art . . . . . 667--673
              Laurance I. Press   Arguments for a Moratorium on the
                                  Construction of a Community Information
                                  Utility  . . . . . . . . . . . . . . . . 674--678
                  J. C. Strauss   An analytic model of the Hasp execution
                                  task monitor . . . . . . . . . . . . . . 679--685
             Thomas L. Adam and   
               K. M. Chandy and   
                  J. R. Dickson   A Comparison of List Schedules for
                                  Parallel Processing Systems  . . . . . . 685--690
                  N. D. Wallace   Computer Generation of Gamma Random
                                  Variates with Non-Integral Shape
                                  Parameters . . . . . . . . . . . . . . . 691--695
                 A. Salazar and   
                  R. V. Oakford   A Graph Formulation of a School
                                  Scheduling Algorithm . . . . . . . . . . 696--698
            Sherwood C. Chu and   
                   Mones Berman   An Exponential Method for the Solution
                                  of Systems of Ordinary Differential
                                  Equations  . . . . . . . . . . . . . . . 699--702
                    J. Pomeranz   ACM Algorithm 487: Exact Cumulative
                                  Distribution of the Kolmogorov-Smirnov
                                  Statistic for Small Samples  . . . . . . 703--704
                    R. P. Brent   ACM Algorithm 488: A Gaussian
                                  pseudo-random number generator [G5]  . . 704--706 (or 704--705??)
             C. William Skinner   Heuristic Approach to Inductive
                                  Inference in Fact Retrieval Systems  . . 707--712

Communications of the ACM
Volume 21,  Number 1, January, 1974

                       D. Mitra   Some Aspects of Hierarchical Memory
                                  Systems  . . . . . . . . . . . . . . . . 54--65

Communications of the ACM
Volume 6,  Number 10, October, 1975

                R. E. Millstein   Control Structures in Illiac IV Fortran  157--164
                T. Sterling and   
                     V. Lum and   
                     N. Shu and   
                      B. Housel   CONVERT: A High Level Translation
                                  Definition Language for Data Conversion  557--567

Communications of the ACM
Volume 18,  Number 1, January, 1975

                 Aaron Finerman   Professionalism in the Computing Field   4--9
                    F. L. Bauer   Positivity and Norms . . . . . . . . . . 9--13
                      John Todd   The Lemniscate Constants . . . . . . . . 14--19
                  G. Peters and   
                J. H. Wilkinson   On the Stability of Gauss-Jordan
                                  Elimination with Pivoting  . . . . . . . 20--24
               Garrett Birkhoff   Two Hadamard Numbers for Matrices  . . . 25--29
               A. van der Sluis   Perturbations of Eigenvalues of
                                  Non-Normal Matrices  . . . . . . . . . . 30--36
              Marvin Marcus and   
               Herbert Robinson   Elementary Divisors of Tensor Products   36--39
             Magnus R. Hestenes   Pseudoinverses and Conjugate Gradients   40--43
                Harlan D. Mills   The New Math of Computer Programming . . 43--48
              Tien Chi Chen and   
                   Irving T. Ho   Storage-Efficient Representation of
                                  Decimal Data . . . . . . . . . . . . . . 49--52
                 Werner Liniger   Connections Between Accuracy and
                                  Stability Properties of Linear Multistep
                                  Formulas . . . . . . . . . . . . . . . . 53--56
              Richard J. Hanson   Stably Updating Mean and Standard
                                  Deviation of Data  . . . . . . . . . . . 57--58

Communications of the ACM
Volume 18,  Number 2, February, 1975

                  John McCarthy   Proposed Criterion for a Cipher to be
                                  Probable-Word Proof  . . . . . . . . . .   ??
              G. J. Burnett and   
             E. G. Coffman, Jr.   Analysis of Interleaved Memory Systems
                                  Using Blockage Buffers . . . . . . . . . 91--95
                Neil M. Goldman   Sentence Paraphrasing from a Conceptual
                                  Base . . . . . . . . . . . . . . . . . . 96--106
       Gordon J. VanderBrug and   
                    Jack Minker   State-Space, Problem-Reduction, and
                                  Theorem Proving --- Some Relationships   107--115
              Carolyn Kimme and   
               Dana Ballard and   
                  Jack Sklansky   Finding Circles by an Array of
                                  Accumulators . . . . . . . . . . . . . . 120--122

Communications of the ACM
Volume 18,  Number 3, March, 1975

             H. C. Johnston and   
                 C. A. R. Hoare   Matrix Reduction --- an Efficient Method
                                  (school timetables)  . . . . . . . . . . 141--150
         Brian W. Kernighan and   
              Lorinda L. Cherry   A System for Typesetting Mathematics . . 151--157
               D. H. Lawrie and   
                  T. Layman and   
                    D. Baer and   
                   J. M. Randal   GLYPNIR --- A programming language for
                                  Illiac IV  . . . . . . . . . . . . . . . 157--164
            Robert W. Floyd and   
               Ronald L. Rivest   Expected Time Bounds for Selection . . . 165--172
                R. W. Floyd and   
                   R. L. Rivest   ACM Algorithm 489: The Algorithm SELECT
                                  -- for Finding the $i$th Smallest of $n$
                                  Elements . . . . . . . . . . . . . . . . 173--173
              A. M. Erisman and   
                   W. F. Tinney   On Computing Certain Elements of the
                                  Inverse of a Sparse Matrix . . . . . . . 177--179
                 L. F. Shampine   Discrete Least Squares Polynomial Fits   179--180
               A. van der Sluis   Corrigendum: ``Perturbations of
                                  eigenvalues of non-normal matrices'' . .  180
                   D. L. Parnas   On a Solution to the Cigarette Smoker's
                                  Problem (Without Conditional Statements) 181--183

Communications of the ACM
Volume 18,  Number 4, April, 1975

           Jack A. Chambers and   
                   Ray V. Poore   Computer Networks in Higher Education:
                                  Socio-Economic-Political Factors . . . . 193--199
             E. S. Ginsberg and   
                  D. Zaborowski   ACM Algorithm 490: The Dilogarithm
                                  Function of a Real Argument  . . . . . . 200--202
                 K. K. Shen and   
                 J. L. Peterson   Corrigendum: ``A Weighted Buddy Method
                                  for Dynamic Storage Allocation'' . . . . 202--202
                   Graham Smith   On Maintenance of the Opportunity List
                                  for Class-Teacher Timetable Problems . . 203--208
                    I. C. Braid   The Synthesis of Solids Bounded by Many
                                  Faces  . . . . . . . . . . . . . . . . . 209--216
              Vladimir Batagelj   Quadratic Hash Method When the Table
                                  Size is not a Prime Number . . . . . . . 216--217
           Henry S. Warren, Jr.   A Modification of Warshall's Algorithm
                                  for the Transitive Closure of Binary
                                  Relations  . . . . . . . . . . . . . . . 218--220
                 James A. Hinds   Algorithm for Locating Adjacent Storage
                                  Blocks in the Buddy System . . . . . . . 221--222
            Jean G. Vaucher and   
                   Pierre Duval   A Comparison of Simulation Event List
                                  Algorithms . . . . . . . . . . . . . . . 223--230
         Robert R. Korfhage and   
                David W. Matula   On Salazar and Oakford . . . . . . . . . 240--240
           Michael R. Garey and   
               David S. Johnson   On Salazar and Oakford . . . . . . . . . 240--241

Communications of the ACM
Volume 18,  Number 5, May, 1975

                David A. Fisher   Copying Cyclic List Structures in Linear
                                  Time Using Bounded Workspace . . . . . . 251--252
            Alfonso F. Cardenas   Analysis and Performance of Inverted
                                  Data Base Structures . . . . . . . . . . 253--263
                   Yorick Wilks   An intelligent analyzer and understander
                                  of English . . . . . . . . . . . . . . . 264--274
                    N. E. Gibbs   ACM Algorithm 491: Basic Cycle
                                  Generation . . . . . . . . . . . . . . . 275--276 (or 275--275??)
                D. J. Evans and   
                 M. Hatzopoulos   A note on the LU factorization of a
                                  symmetric matrix . . . . . . . . . . . . 278--279
                      B. L. Fox   More on $k$th Shortest Paths . . . . . . 279--279
                A. I. Wasserman   A problem-list of public policy issues
                                  concerning computers and health care . . 279--280
                Harlan D. Mills   Corrigendum: ``The New Math of Computer
                                  Programming''  . . . . . . . . . . . . . 280--280
             Steven L. Horowitz   Syntactic Algorithm for Peak Detection
                                  in Waveforms with Applications to
                                  Cardiography . . . . . . . . . . . . . . 281--285
         Charles E. Pfefferkorn   Heuristic Problem Solving Design System
                                  for Equipment or Furniture Layouts . . . 286--297
         Robert R. Korfhage and   
                David W. Matula   More on the Salazar and Oakford Paper    303--303

Communications of the ACM
Volume 18,  Number 6, June, 1975

                    N. E. Gibbs   ACM Algorithm 492: Generation of All the
                                  Cycles of a Graph from a Set of Basic
                                  Cycles . . . . . . . . . . . . . . . . . 310--310
                Bui Tuong Phong   Illumination for Computer Generated
                                  Pictures . . . . . . . . . . . . . . . . 311--317
                  V. Y. Lum and   
                M. E. Senko and   
                 C. P. Wang and   
                        H. Ling   A Cost Oriented Algorithm for Data Set
                                  Allocation in Storage Hierarchies  . . . 318--322
             Alan F. Babich and   
                John Grason and   
                David L. Parnas   Significant Event Simulation . . . . . . 323--329
             Robert B. K. Dewar   Indirect Threaded Code . . . . . . . . . 330--331
               Ben Cranston and   
                    Rick Thomas   Simplified Recombination Scheme for the
                                  Fibonacci Buddy System . . . . . . . . . 331--332
              Alfred V. Aho and   
           Margaret J. Corasick   Efficient String Matching: an Aid to
                                  Bibliographic Search . . . . . . . . . . 333--340
               D. S. Hirschberg   A Linear Space Algorithm for Computing
                                  Maximal Common Subsequences  . . . . . . 341--343
                  Stephen Soule   Addition in an Arbitrary Base Without
                                  Radix Conversion . . . . . . . . . . . . 344--346
               L. H. Harper and   
                T. H. Payne and   
               J. E. Savage and   
                      E. Straus   Sorting $X + Y$  . . . . . . . . . . . . 347--350 (or 347--349??)
                  F. Paul Wyman   Improved Event-Scanning Mechanisms for
                                  Discrete Event Simulation  . . . . . . . 350--353
            Donald E. Knuth and   
           Charles T. Zahn, Jr.   Ill-Chosen Use of ``Event''  . . . . . . 360--360

Communications of the ACM
Volume 18,  Number 7, July, 1975

                 P. J. Courtois   Decomposability, Instabilities, and
                                  Saturation in Multiprogramming Systems   371--377
                  Soren Lauesen   A large semaphore based operating system 377--389
                Naomi Sager and   
                 Ralph Grishman   Restriction Language for Computer
                                  Grammars of Natural Language . . . . . . 390--400
               D. L. Parnas and   
                D. P. Siewiorek   Use of the Concept of Transparency in
                                  the Design of Hierarchically Structured
                                  Systems  . . . . . . . . . . . . . . . . 401--408
                 H. Freeman and   
                     R. Shapira   Determining the Minimum-Area Encasing
                                  Rectangle for an Arbitrary Closed Curve  409--413
               Daniel G. Bobrow   A Note on Hash Linking . . . . . . . . . 413--415
                R. E. Weber and   
                   B. Gilchrist   Discrimination in the employment of
                                  women in the computer industry . . . . . 416--418

Communications of the ACM
Volume 18,  Number 8, August, 1975

                  John E. Shore   On the External Storage Fragmentation
                                  Produced by First-Fit and Best-Fit
                                  Allocation Strategies  . . . . . . . . . 433--440
                  A. V. Aho and   
              S. C. Johnson and   
                   J. D. Ullman   Deterministic Parsing of Ambiguous
                                  Grammars . . . . . . . . . . . . . . . . 441--452
             Edsger W. Dijkstra   Guarded Commands, Nondeterminacy and
                                  Formal Derivation of Programs  . . . . . 453--457
                   L. W. Cotton   Remark on stably updating mean and
                                  standard deviation of data . . . . . . . 458--458
          Stuart C. Shapiro and   
              Stanley C. Kwasny   Interactive Consulting via Natural
                                  Language . . . . . . . . . . . . . . . . 459--462
                      John Todd   Corrigendum: ``The Lemniscate
                                  Constants''  . . . . . . . . . . . . . . 462--462
              J. G. Vaucher and   
                       P. Duval   Corrigendum: ``A comparison of
                                  simulation event list algorithms'' . . . 462--462
                    A. J. Smith   Comments on a paper by T. C. Chen and I.
                                  T. Ho  . . . . . . . . . . . . . . . . . 463--463
                 Sakti P. Ghosh   Consecutive Storage of Relevant Records
                                  with Redundancy  . . . . . . . . . . . . 464--471
                 Leslie Lamport   Multiple Byte Processing with Full-Word
                                  Instructions . . . . . . . . . . . . . . 471--475
                 Keith Shwayder   Combining Decision Rules in a Decision
                                  Table  . . . . . . . . . . . . . . . . . 476--480

Communications of the ACM
Volume 18,  Number 9, September, 1975

             Guy L. Steele, Jr.   Multiprocessing Compactifying Garbage
                                  Collection . . . . . . . . . . . . . . . 495--508
              Jon Louis Bentley   Multidimensional Binary Search Trees
                                  Used for Associative Searching . . . . . 509--517
               R. Mark Claudson   Digital Simulation of River Plankton
                                  Population Dynamics  . . . . . . . . . . 517--523
           William F. Piepmeier   Optimal Balancing of I/O Requests to
                                  Disks  . . . . . . . . . . . . . . . . . 524--527
                   Ben Wegbreit   Mechanical Program Analysis  . . . . . . 528--539

Communications of the ACM
Volume 18,  Number 10, October, 1975

                  Rob Gerritsen   A Preliminary System for the Design of
                                  DBTG Data Structures . . . . . . . . . . 551--557
                 Nan C. Shu and   
           Barron C. Housel and   
                 Vincent Y. Lum   CONVERT: A High Level Translation
                                  Definition Language for Data Conversion  557--567
           John Miles Smith and   
          Philip Yen-Tang Chang   Optimizing the Performance of a
                                  Relational Algebra Data Base Interface   568--579
             M. M. Astrahan and   
               D. D. Chamberlin   Implementation of a Structured English
                                  Query Language . . . . . . . . . . . . . 580--588
                  Fanica Gavril   Merging with Parallel Processors . . . . 588--591
                  M. Reiser and   
                   H. Kobayashi   Horner's Rule for the Evaluation of
                                  General Closed Queueing Networks . . . . 592--593

Communications of the ACM
Volume 18,  Number 11, November, 1975

                  G. Salton and   
                    A. Wong and   
                     C. S. Yang   A Vector Space Model for Automatic
                                  Indexing . . . . . . . . . . . . . . . . 613--620
           Raymond F. Boyce and   
       Donald D. Chamberlin and   
         W. Frank King, III and   
              Michael M. Hammer   Specifying Queries as Relational
                                  Expressions: The Square Data Sublanguage 621--628
           Henry F. Ledgard and   
               Michael Marcotty   A genealogy of control structures  . . . 629--639
            Susan L. Graham and   
               Steven P. Rhodes   Practical Syntactic Error Recovery . . . 639--650 (or 639--649??)
            James R. Bitner and   
             Edward M. Reingold   Backtrack Programming Techniques . . . . 651--656
            Lawrence T. Kou and   
                     C. K. Wong   A Note on the Set Basis Problem Related
                                  to the Compaction of Character Sets  . . 656--657

Communications of the ACM
Volume 18,  Number 12, December, 1975

                     Peter Naur   Programming Languages, Natural
                                  Languages, and Mathematics . . . . . . . 676--683
             John B. Goodenough   Exception Handling: Issues and a
                                  Proposed Notation  . . . . . . . . . . . 683--696
             Mehdi Jazayeri and   
           William F. Ogden and   
              William C. Rounds   The Intrinsically Exponential Complexity
                                  of the Circularity Problem for Attribute
                                  Grammars . . . . . . . . . . . . . . . . 697--706
         Harry B. Hunt, III and   
        Thomas G. Szymanski and   
              Jeffrey D. Ullman   On the Complexity of LR(k) Testing . . . 707--716
            Susan L. Graham and   
                    Mark Wegman   A fast and usually linear algorithm for
                                  global flow analysis . . . . . . . . . . 716--716
              Richard J. Lipton   Reduction: A Method of Proving
                                  Properties of Parallel Programs  . . . . 717--721
                 J. T. Schwartz   Automatic Data Structure Choice in a
                                  Language of Very High Level  . . . . . . 722--728

Communications of the ACM
Volume 19,  Number 1, January, 1976

          Leonard Kleinrock and   
          William E. Naylor and   
               Holger Opderbeck   A Study of Line Overhead in the ARPANET  3--13
                Neil C. Wilhelm   An Anomaly in Disk Scheduling: A
                                  Comparison of FCFS and SSTF Seek
                                  Scheduling Using an Empirical Model for
                                  Disk Accesses  . . . . . . . . . . . . . 13--18 (or 13--17??)
                Carson E. Agnew   On Quadratic Adaptive Routing Algorithms 18--22
              P. L. Karlton and   
               S. H. Fuller and   
              R. E. Scroggs and   
                  E. B. Kaehler   Performance of Height-Balanced Trees . . 23--28
                J. J. Florentin   Information Reference Coding . . . . . . 29--33
         Charles R. Litecky and   
                Gordon B. Davis   Study of Errors, Error-Proneness, and
                                  Error Diagnosis in Cobol . . . . . . . . 33--37

Communications of the ACM
Volume 19,  Number 2, February, 1976

                Donald E. Knuth   Errata: ``Ancient Babylonian
                                  algorithms''
             Gregor V. Bochmann   Semantic Evaluation from Left to Right   55--62
               Ronald L. Rivest   On Self-Organizing Sequential Search
                                  Heuristics . . . . . . . . . . . . . . . 63--67
                     F. M. Ives   Permutation Enumeration: Four New
                                  Permutation Algorithms . . . . . . . . . 68--72
               Alberto Martelli   Application of Heuristic Search Methods
                                  to Edge and Contour Detection  . . . . . 73--83
               Kenneth F. Siler   A Stochastic Evaluation Model for
                                  Database Organizations in Data Retrieval
                                  Systems  . . . . . . . . . . . . . . . . 84--95
                   Ronald Fagin   A Counterintuitive Example of Computer
                                  Paging . . . . . . . . . . . . . . . . . 96--97
                 Ehud Artzy and   
             James A. Hinds and   
                  Harry J. Saal   A Fast Division Technique for Constant
                                  Divisors . . . . . . . . . . . . . . . . 98--101

Communications of the ACM
Volume 19,  Number 3, March, 1976

               Allen Newell and   
               Herbert A. Simon   Computer Science as Empirical Inquiry:
                                  Symbols and Search . . . . . . . . . . . 113--126
              Jair M. Babad and   
               Mario M. Modiano   Joining Policies in a Multipriority
                                  Multiclass Batch Computer System . . . . 127--136
                F. E. Allen and   
                       J. Cocke   A Program Data Flow Analysis Procedure   137--147 (or 137--146??)
                 Naftaly Minski   Intentional Resolution of Privacy
                                  Protection in Database Systems . . . . . 148--159
                     M. Naftaly   Intentional resolution of privacy
                                  protection in database systems . . . . . 148--159

Communications of the ACM
Volume 19,  Number 4, April, 1976

                    O. R. Smoot   Development of an international system
                                  for legal protection of computer
                                  programs . . . . . . . . . . . . . . . . 171--174
               Bennet P. Lientz   A comparative evaluation of versions of
                                  BASIC  . . . . . . . . . . . . . . . . . 175--181
                     J. Raymond   LG: A language for analytic geometry . . 182--187
                   Ronald Fagin   Corrigendum: ``A Counterintuitive
                                  Example of Computer Paging'' . . . . . .  187
                Shmuel Katz and   
                    Zohar Manna   Logical Analysis of Programs . . . . . . 188--206

Communications of the ACM
Volume 19,  Number 5, May, 1976

             Dorothy E. Denning   A Lattice Model of Secure Information
                                  Flow . . . . . . . . . . . . . . . . . . 236--243
             Jonathan K. Millen   Security Kernel Validation in Practice   243--250
          Butler W. Lampson and   
              Howard E. Sturgis   Reflections on an Operating System
                                  Design . . . . . . . . . . . . . . . . . 251--265
            A. N. Habermann and   
              Lawrence Flon and   
                  Lee Cooprider   Modularization and Hierarchy in a Family
                                  of Operating Systems . . . . . . . . . . 266--272
                 John H. Howard   Proving Monitors . . . . . . . . . . . . 273--279 (or 273--278??)
               Susan Owicki and   
                    David Gries   Verifying Properties of Parallel
                                  Programs: An Axiomatic Approach  . . . . 279--285
           A. Wayne Madison and   
                 Alan P. Batson   Characteristics of Program Localities    285--294
           Barton G. Prieve and   
                    R. S. Fabry   VMIN --- an Optimal Variable-Space Page
                                  Replacement Algorithm  . . . . . . . . . 295--297
              Wesley W. Chu and   
               Holger Opderbeck   Analysis of the PFF Replacement
                                  Algorithm via a Semi-Markov Model  . . . 298--304

Communications of the ACM
Volume 19,  Number 6, June, 1976

              O. E. Taulbee and   
                    S. D. Conte   Production and employment of Ph.D.'s in
                                  computer science . . . . . . . . . . . . 311--313
        Dennis G. Severance and   
               Ricardo A. Duhne   A Practitioner's Guide to Addressing
                                  Algorithms . . . . . . . . . . . . . . . 314--326
             Forest Baskett and   
                 Alan Jay Smith   Interference in Multiprocessor Computer
                                  Systems with Interleaved Memory  . . . . 327--334
             Gideon Frieder and   
                  Harry J. Saal   Process for the Determination of
                                  Addresses in Variable Length Addressing  335--338
                  David S. Wise   Referencing Lists by an Edge . . . . . . 338--342
          Helmut Schumacher and   
              Kenneth C. Sevcik   The synthetic approach to decision table
                                  conversion . . . . . . . . . . . . . . . 343--351
               Douglas W. Clark   An Efficient List Moving Algorithm Using
                                  constant Workspace . . . . . . . . . . . 352--354 (or 353--354??)
             Guy L. Steele, Jr.   Corrigendum: ``Multiprocessing
                                  Compactifying Garbage Collection'' . . . 354--354
                  Gary D. Knott   A Numbering System for Permutations of
                                  Combinations . . . . . . . . . . . . . . 355--356

Communications of the ACM
Volume 19,  Number 7, July, 1976

                S. D. Conte and   
                 M. H. Halstead   Technology of Computer Center
                                  Management: a Proposed Course for
                                  Graduate Professional Programs in
                                  Computer Science or in Information
                                  Systems  . . . . . . . . . . . . . . . . 369--370
               Robert M. Keller   Formal Verification of Parallel Programs 371--384
                  James C. King   Symbolic Execution and Program Testing   385--394
         Robert M. Metcalfe and   
                 David R. Boggs   Ethernet: Distributed Packet Switching
                                  for Local Computer Networks  . . . . . . 395--404
            Cheng-Wen Cheng and   
                    Jonas Rabin   Synthesis of Decision Rules  . . . . . . 404--406
              George S. Fishman   Sampling from the Gamma-distribution on
                                  a computer . . . . . . . . . . . . . . . 407--409
                      Kurt Maly   Compressed Tries . . . . . . . . . . . . 409--415
                  Warren Burton   A buddy system variation for disk
                                  storage allocation . . . . . . . . . . . 416--417
                   G. H. Gonnet   Heaps applied to event driven mechanisms 417--418

Communications of the ACM
Volume 19,  Number 8, August, 1976

                John J. Donovan   Tools and Philosophy for Software
                                  Education  . . . . . . . . . . . . . . . 430--436
                  R. D. Tennent   The Denotational Semantics of
                                  Programming Languages  . . . . . . . . . 437--453
                 James H. Clark   Designing Surfaces in 3-D  . . . . . . . 454--460
        Michael A. Harrison and   
            Walter L. Ruzzo and   
              Jeffrey D. Ullman   Protection in Operating Systems  . . . . 461--471
               D. S. Hirschberg   An Insertion Technique for One-Sided
                                  Height-Balanced Trees  . . . . . . . . . 471--473

Communications of the ACM
Volume 19,  Number 9, September, 1976

              Wesley W. Chu and   
               Holger Opderbeck   Corrigendum: ``Analysis of the PFF
                                  replacement algorithm via a semi-Markov
                                  model''
                   Ben Wegbreit   Corrigendum: ``Faster Retrieval from
                                  Context Trees''  . . . . . . . . . . . .   ??
               Philip L. Wadler   Analysis of an Algorithm for Real Time
                                  Garbage Collection . . . . . . . . . . . 491--500
                    Chee K. Yap   New Upper Bounds for Selection . . . . . 501--508
                Michael C. Loui   Weighted Derivation Trees  . . . . . . . 509--513
              Kenneth G. Walter   Recursion Analysis for Compiler
                                  Optimization . . . . . . . . . . . . . . 514--516
            James R. Bitner and   
             Gideon Ehrlich and   
             Edward M. Reingold   Efficient Generation of the Binary
                                  Reflected Gray Code and Its Applications 517--521
           L. Peter Deutsch and   
               Daniel G. Bobrow   An Efficient, Incremental, Automatic
                                  Garbage Collector  . . . . . . . . . . . 522--526
                   Ben Wegbreit   Faster Retrieval from Context Trees  . . 526--529

Communications of the ACM
Volume 19,  Number 10, October, 1976

             James F. Blinn and   
               Martin E. Newell   Texture and Reflection in Computer
                                  Generated Images . . . . . . . . . . . . 542--547
                 James H. Clark   Hierarchical Geometric Models for
                                  Visible Surface Algorithms . . . . . . . 547--554
                Joshua Z. Levin   A Parametric Algorithm for Drawing
                                  Pictures of Solid Objects Composed of
                                  Quadric Surfaces . . . . . . . . . . . . 555--563
                 N. Burtnyk and   
                        M. Wein   Interactive Skeleton Techniques for
                                  Enhancing Motion Dynamics in Key Frame
                                  Animation  . . . . . . . . . . . . . . . 564--569
                 James W. Frane   The BMD and BMDP Series of Statistical
                                  Computer Programs  . . . . . . . . . . . 570--576
              C. Duong-Kien and   
             H.-J. Hoffmann and   
                        D. Muth   An improvement to Martin's algorithm for
                                  computation of linear precedence
                                  functions  . . . . . . . . . . . . . . . 576--577
 Richard G. Montanelli, Jr. and   
               Sandra A. Mamrak   Status of Women and Minorities in
                                  Academic Computer Science  . . . . . . . 578--581

Communications of the ACM
Volume 19,  Number 11, November, 1976

                     D. T. Ross   Homilies for humble standards (computer
                                  applications)  . . . . . . . . . . . . . 595--600
           Henry F. Ledgard and   
                William C. Cave   Cobol Under Control  . . . . . . . . . . 601--608
           Thomas R. Wilcox and   
              Alan M. Davis and   
             Michael H. Tindall   Design and Implementation of a Table
                                  Driven, Interactive Diagnostic
                                  Programming System . . . . . . . . . . . 609--616
                    Frank Rubin   Experiments in Text File Compression . . 617--623 (or 617--622??)
              K. P. Eswaran and   
                 J. N. Gray and   
                R. A. Lorie and   
                  I. L. Traiger   The notions of consistency and predicate
                                  locks in a database system . . . . . . . 624--633
                K. Maruyama and   
                    S. E. Smith   Optimal Reorganization of Distributed
                                  Space Disk Files . . . . . . . . . . . . 634--642
              Richard G. Hamlet   High-Level Binding with Low-Level
                                  Linkers  . . . . . . . . . . . . . . . . 642--644

Communications of the ACM
Volume 19,  Number 12, December, 1976

                 Jean E. Sammet   Roster of Programming Languages for
                                  1974--75 . . . . . . . . . . . . . . . . 655--669
                 Bruce W. Arden   The Computer Science and Engineering
                                  Research Study (COSERS)  . . . . . . . . 670--673
       J. F. Nunamaker, Jr. and   
     Benn R. Konsynski, Jr. and   
                  Thomas Ho and   
                    Carl Singer   Computer-Aided Analysis and Design of
                                  Information Systems  . . . . . . . . . . 674--687
            George Stockman and   
               Laveen Kanal and   
                     M. C. Kyle   Structural Pattern Recognition of
                                  Carotid Pulse Waves Using a General
                                  Waveform Parsing System  . . . . . . . . 688--695

Communications of the ACM
Volume 20,  Number 1, January, 1977

               Allen van Gelder   Structured programming in COBOL: an
                                  approach for application programmers . . 2--12
         Richard H. Austing and   
            Bruce H. Barnes and   
                Gerald L. Engel   A Survey of the Literature in Computer
                                  Science Education Since Curriculum '68   13--21
                  Jair M. Babad   A Record and File Partitioning Model . . 22--31 (or 22--30??)
          Albert L. Zobrist and   
      Frederick R. Carlson, Jr.   Detection of Combined Occurrences  . . . 31--36 (or 31--35??)
               A. P. Batson and   
                 R. E. Brundage   Segment Sizes and Lifetimes in Algol 60
                                  Programs . . . . . . . . . . . . . . . . 36--44
                    David Gries   On Believing Programs to be Correct  . . 49--50

Communications of the ACM
Volume 20,  Number 2, February, 1977

               Mervin E. Muller   An Approach to Multidimensional Data
                                  Array Processing by Computer . . . . . . 63--77
           Douglas W. Clark and   
               C. Cordell Green   An Empirical Study of List Structure in
                                  LISP . . . . . . . . . . . . . . . . . . 78--87
            F. P. Preparata and   
                     S. J. Hong   Convex Hulls of Finite Sets of Points in
                                  Two and Three Dimensions . . . . . . . . 87--93
               M. C. Easton and   
                  B. T. Bennett   Transient-Free Working-Set Statistics    93--99
                 Jack Bresenham   A Linear Algorithm for Incremental
                                  Digital Display of Circular Arcs . . . . 100--106
        Thoddi C. T. Kotiah and   
             David I. Steinberg   Occurrences of Cycling and Other
                                  Phenomena Arising in a Class of Linear
                                  Programming Models . . . . . . . . . . . 107--112
                  Gary D. Knott   A Numbering System for Binary Trees  . . 113--115

Communications of the ACM
Volume 20,  Number 3, March, 1977

                 Philip Clapson   Improving the Access Time for Random
                                  Access Files . . . . . . . . . . . . . . 127--135
                   C. T. Yu and   
                      G. Salton   Effective Information Retrieval Using
                                  Term Accuracy  . . . . . . . . . . . . . 135--142
                    Amund Lunde   Empirical Evaluation of Some Features of
                                  Instruction Set Processor Architectures  143--153
                R. M. Brown and   
               J. C. Browne and   
                   K. M. Chandy   Memory Management and Response Time  . . 153--165
                  Warren Burton   Representation of Many-Sided Polygons
                                  and Polygonal Lines for Rapid Processing 166--171
            H. B. Hunt, III and   
            T. G. Szymanski and   
                   J. D. Ullman   Operations on Sparse Relations . . . . . 171--176
               Richard L. Nolan   Effects of Chargeout on User/Manager
                                  Attitudes  . . . . . . . . . . . . . . . 177--185
            Israel Borovits and   
                 Philip Ein-Dor   Cost/utilization: A measure of system
                                  performance  . . . . . . . . . . . . . . 185--191
                        C. Bays   A comparison of next-fit, first-fit, and
                                  best-fit . . . . . . . . . . . . . . . . 191--192
               Eberhard Bertsch   The storage requirement in precedence
                                  parsing  . . . . . . . . . . . . . . . . 192--196 (or 192--194??)

Communications of the ACM
Volume 20,  Number 4, April, 1977

       James H. Morris, Jr. and   
                   Ben Wegbreit   Subgoal Induction  . . . . . . . . . . . 209--222
         Steven L. Tanimoto and   
            Theodosios Pavlidis   Editing of Picture Segmentations Using
                                  Local Analysis of Graphs . . . . . . . . 223--229
            Nicholas V. Findler   Studies in Machine Cognition Using the
                                  Game of Poker  . . . . . . . . . . . . . 230--245
                K. Maruyama and   
                    S. E. Smith   Analysis of Design Alternatives for
                                  Virtual Memory Indexes . . . . . . . . . 245--254
        Henry C. Lucas, Jr. and   
                Jimmy A. Sutton   Stage Hypothesis and the S-Curve: Some
                                  Contradictory Evidence . . . . . . . . . 254--259
                      S. B. Yao   Approximating block accesses in database
                                  organizations  . . . . . . . . . . . . . 260--261
                C. R. Hollander   Remark on uniform insertion on
                                  structured data structures . . . . . . . 261--262
            S. K. Bandyopadhyay   Comment on weighted increment linear
                                  search for scatter tables  . . . . . . . 262--263
             C. D. Thompson and   
                     H. T. Kung   Sorting on a Mesh-Connected Parallel
                                  Computer . . . . . . . . . . . . . . . . 263--271
          Lawrence Robinson and   
                 Karl N. Levitt   Proof Techniques for Hierarchically
                                  Structured Programs  . . . . . . . . . . 271--283

Communications of the ACM
Volume 20,  Number 5, May, 1977

                 R. C. Holt and   
              D. B. Wortman and   
              D. T. Barnard and   
                    J. R. Cordy   SP/k: A System for Teaching Computer
                                  Programming  . . . . . . . . . . . . . . 301--309
              George S. Fishman   Achieving Specific Accuracy in
                                  Simulation Output Analysis . . . . . . . 310--315
           Howard L. Morgan and   
                   K. Dan Levin   Optimal Program and Data Locations in
                                  Computer Networks  . . . . . . . . . . . 315--322
                 J.-L. Baer and   
                      B. Schwab   A Comparison of Tree-Balancing
                                  Algorithms . . . . . . . . . . . . . . . 322--330
           Neil J. Stillman and   
                 P. Bruce Berra   A Comparison of Hardware and Software
                                  Associative Memories in the Context of
                                  Computer Graphics  . . . . . . . . . . . 331--339
                 Marvin Shapiro   Choice of Reference Points in Best-Match
                                  File Searching . . . . . . . . . . . . . 339--343
              Michael Z. Hanani   An Optimal Evaluation of Boolean
                                  Expressions in an Online Query System    344--347
                      Y. Milman   An Approach to Optimal Design of Storage
                                  Parameters in Databases  . . . . . . . . 347--350
              James W. Hunt and   
            Thomas G. Szymanski   A Fast Algorithm for Computing Longest
                                  Common Subsequences  . . . . . . . . . . 350--353

Communications of the ACM
Volume 20,  Number 6, June, 1977

           Orrin E. Taulbee and   
                    S. D. Conte   Production and Employment of Ph.D.'s in
                                  Computer Science --- 1976  . . . . . . . 370--372
            Ben Shneiderman and   
              Richard Mayer and   
                  Don McKay and   
                   Peter Heller   Experimental Investigations of the
                                  Utility of Detailed Flowcharts in
                                  Programming  . . . . . . . . . . . . . . 373--381
              H. F. Ledgard and   
                   R. W. Taylor   Two Views of Data Abstraction  . . . . . 382--384
             Moshe M. Zloof and   
               S. Peter de Jong   The System for Business Automation
                                  (SBA): Programming Language  . . . . . . 385--396
                 John V. Guttag   Abstract Data Types and the Development
                                  of Data Structures . . . . . . . . . . . 396--404
           John Miles Smith and   
              Diane C. P. Smith   Database Abstractions: Aggregation . . . 405--413
                David Gries and   
                  Narain Gehani   Some Ideas on Data Types in High-Level
                                  Languages  . . . . . . . . . . . . . . . 414--420
          James L. Peterson and   
             Theodore A. Norman   Buddy Systems  . . . . . . . . . . . . . 421--431
                   J. M. Robson   A Bounded Storage Algorithm for Copying
                                  Cyclic Structures  . . . . . . . . . . . 431--433
                     R. S. Bird   Notes on Recursion Elimination . . . . . 434--439
           Henry S. Warren, Jr.   Functions Realizable with Word-Parallel
                                  Logical and Two's-Complement Addition
                                  Instructions . . . . . . . . . . . . . . 439--441

Communications of the ACM
Volume 20,  Number 7, July, 1977

               Sandra A. Mamrak   Dynamic Response Time Prediction for
                                  Computer Networks  . . . . . . . . . . . 461--468
         Manfred Ruschitzka and   
                    R. S. Fabry   A Unifying Approach to Scheduling  . . . 469--477
          William D. Tajibnapis   A Correctness Proof of a Topology
                                  Information Maintenance Protocol for a
                                  Distributed Computer Network . . . . . . 477--485
             Paul G. Heckel and   
              Butler W. Lampson   A terminal-oriented communication system 486--494
    Ben Ross Schneider, Jr. and   
                  Reid M. Watts   SITAR: an Interactive Text Processing
                                  System for Small Computers . . . . . . . 495--499
               J. L. W. Kessels   Alternative to Event Queues for
                                  Synchronization in Monitors  . . . . . . 500--503
         Dorothy E. Denning and   
               Peter J. Denning   Certification of Programs for Secure
                                  Information Flow . . . . . . . . . . . . 504--513
               Jeffrey M. Barth   Shifting Garbage Collection Overhead to
                                  Compile Time . . . . . . . . . . . . . . 513--518
             E. A. Ashcroft and   
                    W. W. Wadge   Lucid, a Nonprocedural Language with
                                  Iteration  . . . . . . . . . . . . . . . 519--526
              J. Nevil Brownlee   An Algol-based implementation of SNOBOL
                                  4 patterns . . . . . . . . . . . . . . . 527--529

Communications of the ACM
Volume 20,  Number 8, August, 1977

         Charles M. Geschke and   
       James H. Morris, Jr. and   
         Edwin H. Satterthwaite   Early Experience with Mesa . . . . . . . 540--553
                  Mary Shaw and   
            William A. Wulf and   
                Ralph L. London   Abstraction and Verification in Alphard:
                                  Defining and Specifying Iteration and
                                  Generators . . . . . . . . . . . . . . . 553--564
             Barbara Liskov and   
                Alan Snyder and   
           Russell Atkinson and   
                Craig Schaffert   Abstraction Mechanisms in CLU  . . . . . 564--576
                  Niklaus Wirth   Toward a Discipline of Real-Time
                                  Programming  . . . . . . . . . . . . . . 577--583
                   J. D. Gannon   An experimental evaluation of data type
                                  conventions  . . . . . . . . . . . . . . 584--595
               W. R. Franta and   
                      Kurt Maly   An Efficient Data Structure for the
                                  Simulation Event Set . . . . . . . . . . 596--602
               Eugene L. Lawler   Comment on computing the $k$ shortest
                                  paths in a graph . . . . . . . . . . . . 603--604
                     N. Francez   Another advantage of keyword notation
                                  for parameter communication with
                                  subprograms  . . . . . . . . . . . . . . 604--605

Communications of the ACM
Volume 20,  Number 9, September, 1977

               Michael O. Rabin   Complexity of Computations . . . . . . . 625--633
                  Dana S. Scott   Logic and Programming Languages  . . . . 634--641
             Richard H. Austing   The GRE Advanced Test in Computer
                                  Science  . . . . . . . . . . . . . . . . 642--645
            Robert W. Scheifler   An Analysis of Inline Substitution for a
                                  Structured Programming Language  . . . . 647--654
               David K. Gifford   Hardware Estimation of a Process'
                                  Primary Memory Requirements  . . . . . . 655--663
               Harry G. Mairson   Some New Upper Bounds on the Generation
                                  of Prime Numbers . . . . . . . . . . . . 664--669
            Edward M. McCreight   Pagination of B*-Trees with
                                  Variable-Length Records  . . . . . . . . 670--674

Communications of the ACM
Volume 20,  Number 10, October, 1977

                   H. Fuchs and   
                Z. M. Kedem and   
                  S. P. Uselton   Optimal Surface Reconstruction from
                                  Planar Contours  . . . . . . . . . . . . 693--702
          Sheng-Chuan C. Wu and   
               John F. Abel and   
            Donald P. Greenberg   An Interactive Computer Graphics
                                  Approach to Surface Representation . . . 703--712
                 Barry K. Rosen   High-Level Data Flow Analysis  . . . . . 712--724
              C. Montangero and   
                  G. Pacini and   
                      F. Turini   Two-Level Control Structure for
                                  Nondeterministic Programming . . . . . . 725--730
                Wilf R. LaLonde   Regular Right Part Grammars and Their
                                  Parsers  . . . . . . . . . . . . . . . . 731--741
                   R. Devillers   Game Interpretation of the Deadlock
                                  Avoidance Problem  . . . . . . . . . . . 741--745
                   Evan L. Ivie   Programmer's Workbench --- a Machine for
                                  Software Development . . . . . . . . . . 746--753
                 Alan Jay Smith   Multiprocessor Memory Organization and
                                  Memory Interference  . . . . . . . . . . 754--761
            Robert S. Boyer and   
              J. Strother Moore   A Fast String Searching Algorithm  . . . 762--772

Communications of the ACM
Volume 20,  Number 11, November, 1977

                   J. A. N. Lee   Considerations for future programming
                                  language standards activities  . . . . . 788--794
             Rollins Turner and   
                  Bill Strecker   Use of the LRU Stack Depth Distribution
                                  for Simulation of Paging Behavior  . . . 795--798
               Franklin C. Crow   The Aliasing Problem in
                                  Computer-Generated Shaded Images . . . . 799--805
                 Leslie Lamport   Concurrent Reading and Writing . . . . . 806--811
                  John E. Shore   Anomalous Behavior of the Fifty-Percent
                                  Rule in Dynamic Memory Allocation  . . . 812--820
             G. C. Stockman and   
                 A. K. Agrawala   Equivalence of Hough curve detection to
                                  template matching  . . . . . . . . . . . 820--822
                       N. Wirth   What can we do about the unnecessary
                                  diversity of notation for syntactic
                                  definitions? . . . . . . . . . . . . . . 822--823
                      M. K. Roy   A note on reflection-free permutation
                                  enumeration  . . . . . . . . . . . . . . 823--823
                Zohar Manna and   
                     Adi Shamir   The Optimal Approach to Recursive
                                  Programs . . . . . . . . . . . . . . . . 824--831
             Michael Hammer and   
              W. Gerry Howe and   
         Vincent J. Kruskal and   
               Irving Wladawsky   Very High Level Programming Language for
                                  Data Processing Applications . . . . . . 832--840
                Renzo Sprugnoli   Perfect Hashing Functions: A Single
                                  Probe Retrieving Method for Static Sets  841--850
                 John Cocke and   
                    Ken Kennedy   An Algorithm for Reduction of Operator
                                  Strength . . . . . . . . . . . . . . . . 850--856
                     R. S. Bird   Improving Programs by the Introduction
                                  of Recursion . . . . . . . . . . . . . . 856--863
              Norman R. Nielsen   Dynamic Memory Allocation in Computer
                                  Simulation . . . . . . . . . . . . . . . 864--873
         Michael W. Blasgen and   
           Richard G. Casey and   
              Kapali P. Eswaran   An Encoding Method for Multifield
                                  Sorting and Indexing . . . . . . . . . . 874--878
              Enrique Grapa and   
              Geneva G. Belford   Some Theorems to Aid in Solving the File
                                  Allocation Problem . . . . . . . . . . . 878--882

Communications of the ACM
Volume 20,  Number 12, December, 1977

                A. A. Lopez and   
                 R. Raymond and   
                     R. Tardiff   A survey of computer science offerings
                                  in small liberal arts colleges . . . . . 902--906
               J. L. W. Kessels   A Conceptual Framework for a
                                  Nonprocedural Programming Language . . . 906--913
             J. Lawrence Carter   A Case Study of a New Code Generation
                                  Technique for Compilers  . . . . . . . . 914--920
                    David Gries   An Exercise in Proving Parallel Programs
                                  Correct  . . . . . . . . . . . . . . . . 921--930
                    Irene Grief   A language for formal problem
                                  specification  . . . . . . . . . . . . . 931--935
         Marshall D. Abrams and   
                 Siegfried Treu   A Methodology for Interactive Computer
                                  Service Measurement  . . . . . . . . . . 936--944
             J. N. Danziger and   
                   W. H. Dutton   Computers as an innovation in American
                                  local governments  . . . . . . . . . . . 945--956

Communications of the ACM
Volume 24,  Number 1, January, 1977

                  P. D. Summers   A Methodology for LISP Program
                                  Construction from Examples . . . . . . . 161--175
                S. H. Lavington   The Manchester Mark I and Atlas: a
                                  historical perspective . . . . . . . . . 4--12
               R. N. Ibbett and   
                    P. C. Capon   The development of the MU5 computer
                                  system . . . . . . . . . . . . . . . . . 13--24
            B. R. Borgerson and   
               M. L. Hanson and   
                  P. A. Hartley   Evolution of the Sperry Univac 1100
                                  Series: a History, Analysis, and
                                  Projection . . . . . . . . . . . . . . . 25--43
                 C. G. Bell and   
                   A. Kotok and   
             T. N. Hastings and   
                        R. Hill   The Evolution of the DECsystem 10  . . . 44--63
             Richard M. Russell   The CRAY-1 Computer System . . . . . . . 63--72
            Richard P. Case and   
                  Andris Padegs   Architecture of the IBM System/370 . . . 73--96

Communications of the ACM
Volume 21,  Number 2, February, 1978

               S. A. Mamrak and   
          R. G. Montanelli, Jr.   Computer science faculties: the current
                                  status of minorities and women . . . . . 115--119
               R. L. Rivest and   
                  A. Shamir and   
                     L. Adelman   A Method for Obtaining Digital
                                  Signatures and Public-Key Cryptosystems  120--126
            M. A. Auslander and   
                   H. R. Strong   Systematic Recursion Removal . . . . . . 127--134
                  L. T. Kou and   
           L. J. Stockmeyer and   
                     C. K. Wong   Covering Edges by Cliques with Regard to
                                  Keyword Conflicts and Intersection
                                  Graphs . . . . . . . . . . . . . . . . . 135--139
                Gerald Held and   
            Michael Stonebraker   B-Trees Re-Examined  . . . . . . . . . . 139--143
             William J. Stewart   A Comparison of Numerical Techniques in
                                  Markov Modeling  . . . . . . . . . . . . 144--152
            Gabor T. Herman and   
                Arnold Lent and   
                  Peter H. Lutz   Relaxation Methods for Image
                                  Reconstruction . . . . . . . . . . . . . 152--158
                Zohar Manna and   
              Richard Waldinger   Is `Sometime' Sometimes Better Than
                                  `Always'? (Intermittent Assertions in
                                  Proving Program Correctness) . . . . . . 159--172
         Bruce J. Schachter and   
               Azriel Rosenfeld   Some New Methods of Detecting Step Edges
                                  in Digital Pictures  . . . . . . . . . . 172--176

Communications of the ACM
Volume 21,  Number 3, March, 1978

               Michael O. Rabin   Corrigendum: ``Complexity of
                                  computations''
            Henry C. Lucas, Jr.   Use of an Interactive Information
                                  Storage and Retrieval System in Medical
                                  Research . . . . . . . . . . . . . . . . 197--205
          William H. Dutton and   
             Kenneth L. Kraemer   Management Utilization of Computers in
                                  American Local Governments . . . . . . . 206--218
                 R. E. Anderson   Value orientation of computer science
                                  students . . . . . . . . . . . . . . . . 219--225
                S. Rao Kosaraju   Insertions and Deletions in One-Sided
                                  Height-Balanced Trees  . . . . . . . . . 226--227
         Richard A. DeMillo and   
       Stanley C. Eisenstat and   
              Richard J. Lipton   Preserving Average Proximity in Arrays   228--231
             M. A. Franklin and   
            G. Scott Graham and   
                    R. K. Gupta   Anomalies with Variable Partition Paging
                                  Algorithms . . . . . . . . . . . . . . . 232--236
            Andrew S. Tanenbaum   Implications of Structured Programming
                                  for Machine Architecture . . . . . . . . 237--246

Communications of the ACM
Volume 21,  Number 4, April, 1978

                W. H. Payne and   
                 K. L. McMillen   Orderly Enumeration of Nonsingular
                                  Binary Matrices Applied to Text
                                  Encryption . . . . . . . . . . . . . . . 259--263
                    Paul Heckel   A Technique for Isolating Differences
                                  Between Files  . . . . . . . . . . . . . 264--268
                        Art Lew   Optimal Conversion of Extended-Entry
                                  Decision Tables with General Cost
                                  Criteria . . . . . . . . . . . . . . . . 269--279
            Henry G. Baker, Jr.   List Processing in Real Time on a Serial
                                  Computer . . . . . . . . . . . . . . . . 280--294
                Ralph C. Merkle   Secure Communications Over Insecure
                                  Channels . . . . . . . . . . . . . . . . 294--299
            Thomas G. Szymanski   Assembling Code for machines with
                                  Span-Dependent Instructions  . . . . . . 300--308
                 Jean Vuillemin   A Data Structure for Manipulating
                                  Priority Queues  . . . . . . . . . . . . 309--315
                    S. Even and   
                       M. Rodeh   Economical Encoding of Commas Between
                                  Strings  . . . . . . . . . . . . . . . . 315--317
                 R. C. H. Cheng   Generating beta variates with
                                  nonintegral shape parameters . . . . . . 317--322

Communications of the ACM
Volume 21,  Number 5, May, 1978

               Douglas W. Clark   A Fast Algorithm for Copying List
                                  Structures . . . . . . . . . . . . . . . 351--357
             Anita K. Jones and   
              Barbara H. Liskov   A Language Extension for Expressing
                                  Constraints on Data Access . . . . . . . 358--367
                 Matthew Geller   Test Data as an Aid in Proving Program
                                  Correctness  . . . . . . . . . . . . . . 368--375
                   James R. Low   Automatic Data Structure Selection: an
                                  Example and Overview . . . . . . . . . . 376--385
               Michael Karr and   
           David B. Loveman III   Incorporation of Units into Programming
                                  Languages  . . . . . . . . . . . . . . . 385--391
            David R. Hanson and   
              Ralph E. Griswold   The SL5 procedure mechanism  . . . . . . 392--400
       Frederick Hayes-Roth and   
                 John McDermott   An Interference Matching Technique for
                                  Inducing Abstractions  . . . . . . . . . 401--411
             J. M. Fleisher and   
                    R. R. Meyer   New Sufficient Optimality Conditions for
                                  Integer Programming and Their
                                  Application  . . . . . . . . . . . . . . 411--418
           Pandu R. Tadikamalla   Computer Generation of Gamma Random
                                  Variables  . . . . . . . . . . . . . . . 419--422
               Richard L. Sites   Optimal Shift Strategy for a
                                  Block-Transfer CCD Memory  . . . . . . . 423--425

Communications of the ACM
Volume 21,  Number 6, June, 1978

               S. H. Zweben and   
                 M. A. McDonald   An Optimal Method for Deletion in
                                  One-Sided Height-Balanced Trees  . . . . 441--445
          James R. Driscoll and   
                 Y. Edmund Lien   A Selective Traversal Algorithm for
                                  Binary Search Trees  . . . . . . . . . . 445--447
              Jacques Cohen and   
                 Martin S. Roth   Analyses of Deterministic Parsing
                                  Algorithms . . . . . . . . . . . . . . . 448--458
         M. Dennis Mickunas and   
                  John A. Modry   Automatic Error Recovery for LR Parsers  459--465
               B. P. Lientz and   
              E. B. Swanson and   
                 G. E. Tompkins   Characteristics of Application Software
                                  Maintenance  . . . . . . . . . . . . . . 466--471
                  Earl Chrysler   Some Basic Determinants of Computer
                                  Programming Productivity . . . . . . . . 472--483
                      Rob Kling   Automated Welfare Client-Tracking and
                                  Service Integration: the Political
                                  Economy of Computing . . . . . . . . . . 484--493
                 E. Gelenbe and   
                  D. Derochette   Performance of Rollback Recovery Systems
                                  Under Intermittent Failures  . . . . . . 493--499
                 Toby J. Teorey   General Equations for Idealized CPU-I/O
                                  Overlap Configurations . . . . . . . . . 500--507

Communications of the ACM
Volume 21,  Number 7, July, 1978

                 David L. Waltz   An English Language Query Answering
                                  System for a Large Relational Data Base  526--539
         Michael L. Fredman and   
                    Bruce Weide   On the complexity of computing the
                                  measure of $\bigcup[a_i,b_i]$  . . . . . 540--544
                Francis Y. Chin   An ${O}(n)$ Algorithm for Determining a
                                  Near-Optimal Computation Order of Matrix
                                  Chain Products . . . . . . . . . . . . . 544--549
              Yehoshua Perl and   
                  Alon Itai and   
                      Haim Avni   Interpolation Search --- A Log Log N
                                  Search . . . . . . . . . . . . . . . . . 550--553
       Constantine Halatsis and   
             George Philokyprou   Pseudochaining in Hash Tables  . . . . . 554--557
                 Leslie Lamport   Time, Clocks, and the Ordering of Events
                                  in a Distributed System  . . . . . . . . 558--565
        Henry Givens Baker, Jr.   Shallow Binding in Lisp 1.5  . . . . . . 565--569
                    Hanan Samet   Proving the Correctness of Heuristically
                                  Optimized Code . . . . . . . . . . . . . 570--582
              Robert E. Shostak   An Algorithm for Reasoning About
                                  Equality . . . . . . . . . . . . . . . . 583--585
            Rahul Chattergy and   
                   Udo W. Pooch   Analysis of the Availability of Computer
                                  Systems Using Computer-Aided Algebra . . 586--591
                Lawrence Snyder   B-Trees Re-examined  . . . . . . . . . . 594--594

Communications of the ACM
Volume 21,  Number 8, August, 1978

                    John Backus   Can Programming Be Liberated From the
                                  von Neumann Style? A Functional Style
                                  and its Algebra of Programs  . . . . . . 613--641
                       R. Kling   Value conflicts and social choice in
                                  electronic funds transfer system
                                  developments . . . . . . . . . . . . . . 642--657
               D. S. Hirschberg   Fast Parallel Sorting Algorithms . . . . 657--661
             F. Lockwood Morris   A Time- and Space-Efficient Garbage
                                  Compaction Algorithm . . . . . . . . . . 662--665
                 C. A. R. Hoare   Communicating Sequential Processes . . . 666--677
           Richard S. Brice and   
                   J. C. Browne   Feedback Coupled Resource Allocation
                                  Policies in the
                                  Multiprogramming-Multiprocessor Computer
                                  System . . . . . . . . . . . . . . . . . 678--686
          Peter Scheuermann and   
              C. Robert Carlson   Self-Assessment Procedure V: a
                                  self-assessment procedure dealing with
                                  database systems . . . . . . . . . . . . 687--693

Communications of the ACM
Volume 21,  Number 9, September, 1978

               R. A. Harris and   
                     J. D. Zund   An algorithm using symbolic techniques
                                  for the Bel-Petrov classification of
                                  gravitational fields . . . . . . . . . . 715--717
                H. D. Schwetman   Hybrid Simulation Models of Computer
                                  Systems  . . . . . . . . . . . . . . . . 718--723
               Jeffrey M. Barth   A Practical Interprocedural Data Flow
                                  Analysis Algorithm . . . . . . . . . . . 724--736
            Gerald J. Popek and   
                David A. Farber   Model for Verification of Data Security
                                  in Operating Systems . . . . . . . . . . 737--749
           Peter J. Denning and   
                Donald R. Slutz   Generalized Working Sets for Segment
                                  Reference Strings  . . . . . . . . . . . 750--759
              Glenford J. Myers   Controlled Experiment in Program Testing
                                  and Code Walkthroughs/Inspections  . . . 760--768
                Th. Ottmann and   
                  H. W. Six and   
                        D. Wood   Right Brother Trees  . . . . . . . . . . 769--776
                Ernst G. Ulrich   Event Manipulation for Discrete
                                  Simulations Requiring Large Numbers of
                                  Events . . . . . . . . . . . . . . . . . 777--785
                        K. Maly   A note on virtual memory indexes . . . . 786--787
                Stephen A. Ward   Real Time Plotting of Approximate
                                  Contour Maps . . . . . . . . . . . . . . 788--790
                   A. Tenenbaum   Simulations of dynamic sequential search
                                  algorithms . . . . . . . . . . . . . . . 790--791

Communications of the ACM
Volume 21,  Number 10, October, 1978

                  Walt Brainerd   Fortran 77 . . . . . . . . . . . . . . . 806--820
                 D. Towsley and   
               K. M. Chandy and   
                   J. C. Browne   Models for Parallel Processing Within
                                  Programs: Application to CPU:I/O and
                                  I/O:I/O Overlap  . . . . . . . . . . . . 821--831
                Ben Shneiderman   Jump Searching: A Fast Sequential Search
                                  Technique  . . . . . . . . . . . . . . . 831--834
              Shi-Kuo Chang and   
                   Yin-Wah Wong   Optimal Histogram Matching by Monotone
                                  Gray Level Transformation  . . . . . . . 835--840
                  Robert Morris   Counting Large Numbers of Events in
                                  Small Registers  . . . . . . . . . . . . 840--842
              Colin L. McMaster   An Analysis of Algorithms for the Dutch
                                  National Flag Problem  . . . . . . . . . 842--846
               Robert Sedgewick   Implementing Quicksort Programs  . . . . 847--857
                    Gordon Lyon   Packed Scatter Tables  . . . . . . . . . 857--865
          Malcolm C. Easton and   
                   Ronald Fagin   Cold-Start Vs. Warm-Start Miss Ratios    866--872
               W. R. Franta and   
                      Kurt Maly   A comparison of heaps and the TL
                                  structure for the simulation event set   873--875

Communications of the ACM
Volume 21,  Number 11, November, 1978

                Norman R. Lyons   Systems Design Education: a Gaming
                                  Approach . . . . . . . . . . . . . . . . 889--895
                  J. W. Wendorf   A Simply Extended and Modified Batch
                                  Environment Graphical System (Sembegs)   897--904
                   B. Kumar and   
                 E. S. Davidson   Performance Evaluation of Highly
                                  Concurrent Computers by Deterministic
                                  Simulation . . . . . . . . . . . . . . . 904--913
        Berthold K. P. Horn and   
               Brett L. Bachman   Using Synthetic Images to Register Real
                                  Images with Surface Models . . . . . . . 914--924
              P. R. Tadikamalla   Computer Generation of Gamma Random
                                  Variables --- II . . . . . . . . . . . . 925--928
                G. David Ripley   Simple Recovery-Only Procedure for
                                  Simple Precedence Parsers  . . . . . . . 928--930
             D. P. Friedman and   
                     D. S. Wise   A Note on Conditional Expressions  . . . 931--933
              Per Brinch Hansen   Distributed Processes: A Concurrent
                                  Programming Concept  . . . . . . . . . . 934--941
            Fabrizio Luccio and   
                    Linda Pagli   Power Trees  . . . . . . . . . . . . . . 941--947
                    B. A. Sheil   Median Split Trees: A Fast Lookup
                                  Technique for Frequently Occurring Keys  947--958
                 C. A. R. Hoare   Corrigendum: ``Communicating Sequential
                                  Processes''  . . . . . . . . . . . . . . 958--958
              Eugene C. Freuder   Synthesizing Constraint Expressions  . . 958--966
         Edsger W. Dijkstra and   
             Leslie Lamport and   
               A. J. Martin and   
             C. S. Scholten and   
              E. F. M. Steffens   On-the-Fly Garbage Collection: An
                                  Exercise in Cooperation  . . . . . . . . 966--975

Communications of the ACM
Volume 21,  Number 12, December, 1978

                    David Gries   Corrigendum: ``An exercise in proving
                                  parallel programs correct''
           Roger M. Needham and   
           Michael D. Schroeder   Using Encryption for Authentication in
                                  Large Networks of Computers  . . . . . . 993--999
                David Gries and   
                  Jayadev Misra   A Linear Sieve Algorithm for Finding
                                  Prime Numbers  . . . . . . . . . . . . . 999--1003
          James L. Peterson and   
            James R. Bitner and   
                 John H. Howard   The Selection of Optimal Tab Settings    1004--1007
          James C. Wetherbe and   
                 V. Thomas Dock   Strategic Planning Methodology for the
                                  Computing Effort in Higher Education: an
                                  Empirical Evaluation . . . . . . . . . . 1008--1015
                M. Ibramsha and   
                   V. Rajaraman   Detection of Logical Errors in Decision
                                  Table Programs . . . . . . . . . . . . . 1016--1025
           Alberto Martelli and   
                  Ugo Montanari   Optimizing Decision Trees Through
                                  Heuristically Guided Search  . . . . . . 1025--1039
             Yogen K. Dalal and   
             Robert M. Metcalfe   Reverse Path Forwarding of Broadcast
                                  Packets  . . . . . . . . . . . . . . . . 1040--1048
             John V. Guttag and   
             Ellis Horowitz and   
                David R. Musser   Abstract Data Types and Software
                                  Validation . . . . . . . . . . . . . . . 1048--1064
             Jay M. Spitzen and   
             Karl N. Levitt and   
              Lawrence Robinson   An Example of Hierarchical Design and
                                  Proof  . . . . . . . . . . . . . . . . . 1064--1075

Communications of the ACM
Volume 23,  Number 4, May, 1978

                  J. L. Bentley   Multidimensional Divide-and-Conquer  . . 214--228

Communications of the ACM
Volume 22,  Number 1, January, 1979

                  John W. Boyse   Interference Detection Among Solids and
                                  Surfaces . . . . . . . . . . . . . . . . 3--9
                 Kent W. Colton   The impact and use of computer
                                  technology by the police . . . . . . . . 10--20
     Gian Carlo Bongiovanni and   
                Fabrizio Luccio   Permutation of Data Blocks in a Bubble
                                  Memory . . . . . . . . . . . . . . . . . 21--25
           Charles H. Sauer and   
                 K. Mani Chandy   The Impact of Distributions and
                                  Disciplines on Multiple Processor
                                  Systems  . . . . . . . . . . . . . . . . 25--34
              J. P. Banatre and   
              J. P. Routeau and   
                    L. Trilling   An event-driven compiling technique  . . 34--42
               Jacques J. Arsac   Syntactic Source to Source Transforms
                                  and Program Manipulation . . . . . . . . 43--54

Communications of the ACM
Volume 22,  Number 2, February, 1979

              O. E. Taulbee and   
                    S. D. Conte   Production and employment of Ph.D.s in
                                  computer science --- 1977 and 1978 . . . 75--76
                  R. E. Fairley   Employment characteristics of doctoral
                                  level computer scientists  . . . . . . . 77--78
                 W. E. Gull and   
                  M. A. Jenkins   Recursive data structures in APL.  . . . 79--96
                   E. Morel and   
                    C. Renvoise   Global Optimization by Suppression of
                                  Partial Redundancies . . . . . . . . . . 96--103
             M. R. Anderson and   
                 M. G. Anderson   Comments on Perfect Hashing Functions: A
                                  Single Probe Retrieving Method for
                                  Static Sets  . . . . . . . . . . . . . . 104--105
          David R. Cheriton and   
         Michael A. Malcolm and   
          Lawrence S. Melen and   
                  Gary R. Sager   Thoth, a Portable Real-Time Operating
                                  System . . . . . . . . . . . . . . . . . 105--115
              David P. Reed and   
            Rajendra K. Kanodia   Synchronization with Eventcounts and
                                  Sequencers . . . . . . . . . . . . . . . 115--123
             Haim Mendelson and   
          Joseph S. Pliskin and   
                   Uri Yechiali   Optimal Storage Allocation for Serial
                                  Files  . . . . . . . . . . . . . . . . . 124--130

Communications of the ACM
Volume 22,  Number 3, March, 1979

         Richard H. Austing and   
            Bruce H. Barnes and   
          Della T. Bonnette and   
            Gerald L. Engel and   
                  Gordon Stokes   Curriculum '78: Recommendations for the
                                  Undergraduate Program in Computer
                                  Science --- A Report of the ACM
                                  Curriculum Committee on Computer Science 147--166
            Albert D. Edgar and   
                  Samuel C. Lee   FOCUS microcomputer number system  . . . 166--177
                   James Slagle   Experiments with Some Algorithms that
                                  Find Central Solutions for Pattern
                                  Classification . . . . . . . . . . . . . 178--183
        Amaryllis Deliyanni and   
             Robert A. Kowalski   Logic and Semantic Networks  . . . . . . 184--192
                  Dalia Motzkin   Use of Normal Multiplication Tables for
                                  Information Storage and Retrieval  . . . 193--207
                 C. L. McMaster   Corrigendum: ``An Analysis of Algorithms
                                  for the Dutch National Flag Problem''    207--207

Communications of the ACM
Volume 22,  Number 4, April, 1979

                 Arthur M. Lesk   Detection of Three-Dimensional Patterns
                                  of Atoms in Chemical Structures  . . . . 219--224
                 E. G. Cale and   
           L. L. Gremillion and   
                 J. L. McKenney   Price/Performance Patterns of U.S.
                                  Computer Systems . . . . . . . . . . . . 225--233
              Giacomo Bucci and   
             Donald N. Streeter   Methodology for the Design of
                                  Distributed Information Systems  . . . . 233--245
          Richard J. Hanson and   
             John A. Wisniewski   A Mathematical Programming Updating
                                  Method Using Modified Givens
                                  Transformations and Applied to LP
                                  Problems . . . . . . . . . . . . . . . . 245--251
                  Daniel Brelaz   New Methods to Color the Vertices of a
                                  Graph  . . . . . . . . . . . . . . . . . 251--256

Communications of the ACM
Volume 22,  Number 5, May, 1979

        Richard A. De Millo and   
          Richard J. Lipton and   
                 Alan J. Perlis   Social Processes and Proofs of Theorems
                                  and Programs . . . . . . . . . . . . . . 271--280
               Ernest Chang and   
               Rosemary Roberts   An Improved Algorithm for Decentralized
                                  Extrema-Finding in Circular
                                  Configurations of Processors . . . . . . 281--283
                 T. D. Sterling   Consumer Difficulties with Computerized
                                  Transactions: an Empirical Investigation 283--289
               John C. Reynolds   Reasoning About Arrays . . . . . . . . . 290--299
             Michael J. Manthey   Model for and Discussion of
                                  Multi-Interpreter Systems  . . . . . . . 299--309

Communications of the ACM
Volume 22,  Number 6, June, 1979

                    R. S. Lemos   An implementation of structured
                                  walk-throughs in teaching COBAL
                                  programming  . . . . . . . . . . . . . . 335--340
            S. N. Busenberg and   
                      W. C. Tam   An academic program providing realistic
                                  training in software engineering . . . . 341--345
                   Steven Alter   Model for Automating File and Program
                                  Design in Business Application Systems   345--353
              Jerome A. Feldman   High Level Programming for Distributed
                                  Computing  . . . . . . . . . . . . . . . 353--368
               Robert Sedgewick   Corrigendum: ``Implementing Quicksort
                                  Programs'' . . . . . . . . . . . . . . . 368--368
                 R. Shapira and   
                     H. Freeman   The Cyclic Order Property of Vertices as
                                  an Aid in Scene Analysis . . . . . . . . 368--375

Communications of the ACM
Volume 22,  Number 7, July, 1979

                    T. Winograd   Beyond Programming Languages . . . . . . 391--401
                F. P. Preparata   An Optimal Real-Time Algorithm for
                                  Planar Convex Hulls  . . . . . . . . . . 402--405
         Patrick C. Fischer and   
              Robert L. Probert   Storage Reorganization Techniques for
                                  Matrix Computation in a Paging
                                  Environment  . . . . . . . . . . . . . . 405--415
                 J. H. Hine and   
                 I. Mitrani and   
                        S. Tsur   The Control of Response Times in
                                  Multi-Class Systems by Memory Allocation 415--424
             Robert A. Kowalski   Algorithm = Logic + Control  . . . . . . 424--436

Communications of the ACM
Volume 22,  Number 8, August, 1979

                 J. W. Wong and   
                G. Scott Graham   Self-Assessment Procedure VI: a
                                  self-assessment procedure dealing with
                                  queueing network models of computer
                                  systems  . . . . . . . . . . . . . . . . 449--454
                    R. W. Floyd   The paradigms of programming . . . . . . 455--460
           D. S. Hirschberg and   
              A. K. Chandra and   
                  D. V. Sarwate   Computing Connected Components on
                                  Parallel Computers . . . . . . . . . . . 461--464
          Nachum Dershowitz and   
                    Zohar Manna   Proving Termination with Multiset
                                  Orderings  . . . . . . . . . . . . . . . 465--476
             Dorothy E. Denning   Secure Personal Computing in an Insecure
                                  Network  . . . . . . . . . . . . . . . . 476--482
                   L. S. Nelson   Further remark on stably updating mean
                                  and standard deviation estimates . . . . 483--483

Communications of the ACM
Volume 22,  Number 9, September, 1979

          Jerome A. Feldman and   
          William R. Sutherland   Rejuvenating Experimental Computer
                                  Science --- A Report to the National
                                  Science Foundation and Others  . . . . . 497--502
   Daniel D. McCracken, CCP and   
           Peter J. Denning and   
               David H. Brandin   Addendum: An ACM Executive Committee
                                  Position on the Crisis in Experimental
                                  Computer Science . . . . . . . . . . . . 503--504
                      Zvi Galil   On Improving the Worse Case Running Time
                                  of the Boyer-Moore String Matching
                                  Algorithm  . . . . . . . . . . . . . . . 505--508
           Kari-Jouko Raiha and   
               Stuart H. Zweben   An Optimal Insertion Algorithm for
                                  One-Sided Height-Balanced Binary Search
                                  Trees  . . . . . . . . . . . . . . . . . 508--512
              Wilfred J. Hansen   Progressive acyclic digraphs --- a tool
                                  for database integrity . . . . . . . . . 513--518
                    G. Nagy and   
                    S. G. Wagle   Approximation of Polygonal Maps by
                                  Cellular Maps  . . . . . . . . . . . . . 518--525
                 T. F. Chan and   
                    J. G. Lewis   Computing standard deviations: accuracy  526--531
                  D. H. D. West   Updating mean and variance estimates: an
                                  improved method  . . . . . . . . . . . . 532--535

Communications of the ACM
Volume 22,  Number 10, October, 1979

                    P. D. Laird   Comment on: ``An optimal evaluation of
                                  Boolean expressions in an online query
                                  system'' [Comm. ACM, 20, 1977, no. 5,
                                  344--347, MR 55 #9627] by M. Z. Hanani   549--550
                 Ehud Gudes and   
                Anthony Hoffman   A note on: ``An optimal evaluation of
                                  Boolean expressions in an online query
                                  system'' [Comm. ACM, 20, 1977, no. 5,
                                  344--347, MR 55 #9627] by M. Z. Hanani   550--553
             M. R. Anderson and   
                 M. G. Anderson   Corrigendum: ``Comments on Perfect
                                  Hashing Functions: A Single Probe
                                  Retrieving Method for Static Sets''  . .  553
                 Leslie Lamport   On the Proof of Correctness of a
                                  Calendar Program . . . . . . . . . . . . 554--556
                     Paul Klint   Line Numbers Made Cheap  . . . . . . . . 557--559
         Tomas Lozano-Perez and   
              Michael A. Wesley   An Algorithm for Planning Collision-Free
                                  Paths Among Polyhedral Obstacles . . . . 560--570
                   F. L. Morris   On a Comparison of Garbage Collection
                                  Techniques . . . . . . . . . . . . . . .  571

Communications of the ACM
Volume 22,  Number 11, November, 1979

                    R. E. Mayer   A psychology of learning BASIC . . . . . 589--593
                  R. Morris and   
                    K. Thompson   Password Security --- A Case History . . 594--597
               Shmuel Peleg and   
               Azriel Rosenfeld   Breaking Substitution Ciphers Using a
                                  Relaxation Algorithm . . . . . . . . . . 598--605
        Robert Endre Tarjan and   
            Andrew Chi Chih Yao   Storing a Sparse Table . . . . . . . . . 606--611
                     Adi Shamir   How to Share a Secret  . . . . . . . . . 612--613

Communications of the ACM
Volume 22,  Number 12, December, 1979

                    A. H. Lipis   Costs of the current US payments system  644--647
                     R. H. Long   Public protection and education with EFT 648--654
                   D. B. Parker   Vulnerabilities of EFTs to intentionally
                                  caused losses  . . . . . . . . . . . . . 654--660
              K. L. Kraemer and   
                      K. Colton   Policy, values, and EFT research:
                                  anatomy of a research agenda . . . . . . 660--671
                J. F. Shoch and   
                     J. A. Hupp   Measured Performance of an ETHERNET
                                  Local Network  . . . . . . . . . . . . . 711--721

Communications of the ACM
Volume 26,  Number 9, September, 1979

                    Hanan Samet   A quadtree medial axis transform . . . . 680--693

Communications of the ACM
Volume 33,  Number 6, June, 1990

               Peter K. Pearson   Fast Hashing of Variable-Length Text
                                  Strings  . . . . . . . . . . . . . . . . 677--680

Communications of the ACM
Volume 33,  Number 8, August, 1990

               Daniel M. Sunday   A Very Fast Substring Search Algorithm   132--142

Communications of the ACM
Volume 34,  Number 11, November, 1991

                     I. Dittmer   Note on Fast Hashing of Variable Length
                                  Text Strings . . . . . . . . . . . . . .  118
                  Jacques Savoy   Note on Fast Hashing of Variable Length
                                  Text Strings . . . . . . . . . . . . . . 118--119
                  James Litsios   Note on Fast Hashing of Variable Length
                                  Text Strings . . . . . . . . . . . . . . 118--120
                  Peter Pearson   Note on Fast Hashing of Variable Length
                                  Text Strings . . . . . . . . . . . . . .  120

Computing Surveys
Volume 6,  Number 4, December, 1974

                Donald E. Knuth   Structured Programming with go to
                                  Statements . . . . . . . . . . . . . . . 261--301

Journal of the ACM
Volume 23,  Number 1, January, 1976

            Susan L. Graham and   
                    Mark Wegman   A Fast and Usually Linear Algorithm for
                                  Global Flow Analysis . . . . . . . . . . 172--202

Management Science
Volume 19,  Number , , 1972

                    R. J. Brown   Chromatic scheduling and the chromatic
                                  number problem . . . . . . . . . . . . . 451--463

SIAM Journal of Computing
Volume 6,  Number 2, June, 1977

            Donald E. Knuth and   
               J. H. Morris and   
                    V. R. Pratt   Fast pattern matching in strings . . . . 323--350

Software --- Practice and Experience
Volume 12,  Number 1, January, 1982

                A. L. Tharp and   
                      K.-C. Tai   The practicality of text signatures for
                                  accelerating string searching  . . . . . 35--44

ACM Transactions on Mathematical Software
Volume 1,  Number 3, September, 1975

                  Ove Skovgaard   Remark on ``Algorithm 236: Bessel
                                  Functions of the First Kind [S17]''  . . 282--284
                  Jayadev Misra   Remark on ``Algorithm 246: Graycode
                                  [Z]''  . . . . . . . . . . . . . . . . . 285--285

ACM Transactions on Mathematical Software
Volume 1,  Number 9, September, 1975

               Robert Feinstein   Remark on ``Algorithm 483: Masked
                                  Three-Dimensional Plot Program with
                                  Rotations [J6]'' . . . . . . . . . . . . 285--285

ACM Transactions on Mathematical Software
Volume 2,  Number 1, March, 1976

                  D. M. Boulton   Remark on ``Algorithm 434: Exact
                                  Probabilities for $R\times{C}$
                                  Contingency Tables [G2]''  . . . . . . . 108--108
                 Lucian D. Duta   Remark on ``Algorithm 475: Visible
                                  Surface Plotting Program [J6]''  . . . . 109--110
                G. M. White and   
                S. Goudreau and   
                   J. L. Legros   Remark on ``Algorithm 479: A Minimal
                                  Spanning Tree Clustering Method [Z]''    110--111
                    J. Pomeranz   Remark on ``Algorithm 487: Exact
                                  Cumulative Distribution of the
                                  Kolmogorov-Smirnov Statistic for Small
                                  Samples [S14]''  . . . . . . . . . . . . 111--111
                  Robert Morris   Remark on ``Algorithm 490: The
                                  Dilogarithm Function of a Real Argument
                                  [S22]''  . . . . . . . . . . . . . . . . 112--112

ACM Transactions on Mathematical Software
Volume 2,  Number 2, June, 1976

            Malcolm C. Pike and   
                  Jennie SooHoo   Remark on ``Algorithm 179: Incomplete
                                  Beta Ratio [S14]'' . . . . . . . . . . . 207--208
            Michael R. Anderson   Remark on ``Algorithm 433: Interpolation
                                  and Smooth Curve Fitting Based on Local
                                  Procedures [E2]''  . . . . . . . . . . . 208--208

ACM Transactions on Mathematical Software
Volume 2,  Number 3, September, 1976

                 Alan M. Davies   Remark on ``Algorithm 450: Rosenbrock
                                  Function Minimization [E4]'' . . . . . . 300--301
                 Theodore Brown   Remark on ``Algorithm 489: The Algorithm
                                  SELECT --- for Finding the $i$th
                                  Smallest of $n$ Elements [M1]''  . . . . 301--304

ACM Transactions on Mathematical Software
Volume 2,  Number 4, December, 1976

                      M. R. Ito   Remark on ``Algorithm 284: Interchange
                                  of Two Blocks of Data [K2]'' . . . . . . 392--393
                Mohamed el Lozy   Remark on ``Algorithm 299: Chi-Squared
                                  Integral [S15]'' . . . . . . . . . . . . 393--395
             Henk Koppelaar and   
                 Peter Molenaar   Remark on ``Algorithm 486: Numerical
                                  Inversion of Laplace Transform [D5]''    395--396

ACM Transactions on Mathematical Software
Volume 3,  Number 1, March, 1977

               Esko G. Cate and   
                 David W. Twigg   Algorithm 513: Analysis of In-Situ
                                  Transposition [F1] . . . . . . . . . . . 104--110
            Fran\ccoise Veillon   Remark on ``Algorithm 486: Numerical
                                  Inversion of Laplace Transform'' . . . . 111--111

ACM Transactions on Mathematical Software
Volume 3,  Number 2, June, 1977

                J. K. M. Jansen   Remark on ``Algorithm 259: Legendre
                                  Functions for Arguments Larger than
                                  One''  . . . . . . . . . . . . . . . . . 204--250

ACM Transactions on Mathematical Software
Volume 3,  Number 3, September, 1977

                   Paolo Sipala   Remark on ``Algorithm 408: A Sparse
                                  Matrix Package (Part I) [F4]'' . . . . . 303--303
                  Dennis Tenney   Remark on ``Algorithm 219: Topological
                                  Ordering for PERT Networks'' . . . . . . 303--303

ACM Transactions on Mathematical Software
Volume 4,  Number 1, March, 1978

                  Ove Skovgaard   Remark on ``Algorithm 149: Complete
                                  Elliptic Integral [S21]''  . . . . . . . 95--95

ACM Transactions on Mathematical Software
Volume 4,  Number 3, September, 1978

                John P. Coleman   Remark on ``Algorithm 49: Spherical
                                  Neumann Function'' . . . . . . . . . . . 295--295
              Fred G. Gustavson   Remark on ``Algorithm 408: A Sparse
                                  Matrix Package (Part I) [F4]'' . . . . . 295--295
              Andrew Y. Schoene   Remark on ``Algorithm 435: Modified
                                  Incomplete Gamma Function [S14]''  . . . 296--304

ACM Transactions on Mathematical Software
Volume 5,  Number 2, June, 1979

                Mohamed el Lozy   Remark on ``Algorithm 395: Student's
                                  $t$-Distribution'' and Remark on
                                  ``Algorithm 396: Student's Quantiles
                                  [S14]''  . . . . . . . . . . . . . . . . 238--239
                   K. O. Geddes   Remark on ``Algorithm 424:
                                  Clenshaw-Curtis Quadrature [O1]''  . . . 240--240
                 M. R. Anderson   Remark on ``Algorithm 474: Bivariate
                                  Interpolation and Smooth Surface Fitting
                                  Based on Local Procedures''  . . . . . . 241--241

ACM Transactions on Mathematical Software
Volume 5,  Number 4, December, 1979

             Burton L. Leathers   Remark on ``Algorithm 513: Analysis of
                                  In-Situ Transposition [F1]'' and Remark
                                  on ``Algorithm 467: Matrix Transposition
                                  in Place'' . . . . . . . . . . . . . . . 520--520
       A. C. M. van Swieten and   
            J. Th. M. de Hosson   Remark on ``Algorithm 475: Visible
                                  Surface Plotting Program'' . . . . . . . 521--523

ACM Transactions on Mathematical Software
Volume 6,  Number 3, September, 1980

                   U. Harms and   
             H. Kollakowski and   
                      G. Moller   Remark on ``Algorithm 408: A Sparse
                                  Matrix Package (Part 1) [F4]'' . . . . . 456--457

ACM Transactions on Mathematical Software
Volume 7,  Number 2, June, 1981

                     G. W. Hill   Remark on ``Algorithm 395: Student's
                                  $t$-Distribution'' . . . . . . . . . . . 247--249
                     G. W. Hill   Remark on ``Algorithm 396: Student's
                                  $t$-Quantiles''  . . . . . . . . . . . . 250--251
                 I. D. Hill and   
                     M. C. Pike   Remark on ``Algorithm 299: Chi-Squared
                                  Integral'' . . . . . . . . . . . . . . . 185--185

ACM Transactions on Mathematical Software
Volume 11,  Number 4, December, 1985

                       M. C. Er   Remark on ``Algorithm 246: Graycode
                                  [Z]''  . . . . . . . . . . . . . . . . . 441--443
