Advertisement

Research and Advances

U.S. computer export control policies: value conflicts and policy choices

The formulation of a balanced and effective export control policy for computer products and know-how has been an important and difficult task for both the U.S. Government and the computing community. External pressures force national security concerns to conflict with the values and interests of private enterprise and academic freedom. This paper has two primary objectives: the first is to present the computing community with a reasonably equitable and detailed perspective on this important public policy problem; the second is to present and analyze a range of policy choices.
Research and Advances

A program testing assistant

This paper describes the design and implementation of a program testing assistant which aids a programmer in the definition, execution, and modification of test cases during incremental program development. The testing assistant helps in the interactive definition of test cases and executes them automatically when appropriate. It modifies test cases to preserve their usefulness when the program they test undergoes certain types of design changes. The testing assistant acts as a fully integrated part of the programming environment and cooperates with existing programming tools such as a display editor, compiler, interpreter, and debugger.
Research and Advances

File archival techniques using data compression

The performance of most small computer systems is determined, to a large extent, by the characteristics of their mass storage devices. Data compression can expand the storage capacity of such devices and also slightly increase their speed. Here, a summary of one method of data compression using Huffman variable length coding is presented, along with statistics of effectiveness for various file types and practical techniques for integrating such methods into a small computer system.
Research and Advances

Principles of package design

Subprogram packages are groups of related subroutines used to extend the available facilities in a programming system. The results of developing several such packages for various applications are presented, with a distinction made between external and internal design criteria— what properties packages should offer to their users and the guidelines designers should follow in order to provide them. An important issue, the design of reusable software, is thus addressed, and the concept of abstract data types proposed as a desirable solution.
Research and Advances

Authoring systems in computer based education

The idea of a programming system which generates other programs (referred to as automatic programming or metasoftware) has always been a popular one in computer science. Despite the interest, however, few such systems have actually been inplemented and used. An exception is the development and use of authoring systems in the domain of Computer Based Education (CBE). This article surveys the development and characteristics of authoring systems.
Research and Advances

Controlling the complexity of menu networks

A common approach to the design of user interfaces for computer systems is the menu selection technique. Each menu frame can be considered a node in an information/action network. The set of nodes and the permissible transitions between them (menu selections) form a directed graph which, in a system of substantial size, can be large and enormously complex. The solution to this problem of unmanageable complexity is the same for menu networks as for programs: the disciplined use of a set of well-defined one-in-one-out structures. This paper defines a set of such structures and offers some guidelines for their use.
Research and Advances

Estimating block accesses and number of records in file management

We consider the problems of estimating the number of secondary storage blocks and the number of distinct records accessed when a transaction consisting of possibly duplicate requested records is presented to a file management system. Our main results include (1) a new formula for block access estimation for the case where the requested records may have duplications and their ordering in immaterial and (2) a simple formula for estimating the number of distinct records in the transaction.
Research and Advances

On the inevitable intertwining of specification and implementation

Contrary to recent claims that specification should be completed before implementation begins, this paper presents two arguments that the two processes must be intertwined. First, limitations of available implementation technology may force a specification change. For example, deciding to implement a stack as an array (rather than as a linked list) may impose a fixed limit on the depth of the stack. Second, implementation choices may suggest augmentations to the original specification. For example, deciding to use an existing pattern-match routine to implement the search command in an editor may lead to incorporating some of the routine's features into the specification, such as the ability to include wild cards in the search key. This paper elaborates these points and illustrates how they arise in the specification of a controller for a package router.
Research and Advances

Form management

This paper consists of three interrelated parts. In the first part forms are intoduced as an abstraction and generalization of business paper forms. A set of facilities for the manipulation of forms and their contents is outlined. Forms can be created, stored, found, viewed in different media, mailed, and located by office workers. Data on forms can also be processed in a completely integrated way. The facilities are discussed both abstractly and in relation to a prototype system. In the second part a facility is outlined for the specification and implementation of automatic form procedures. These procedures specify actions on forms which are triggered automatically when certain preconditions are met. The preconditions, actions, and specification method are based on forms. The discussion is centered on our implementation of such a specification framework. Finally, in the third part, techniques for the analysis of office flow are specified. An algorithm is outlined for the categorization of forms into classes depending on the local routing and actions on the forms. In this way, we can obtain the paths that forms take and analyze the system for correctness and loading characteristics.
Research and Advances

Programmers use slices when debugging

Computer programmers break apart large programs into smaller coherent pieces. Each of these pieces: functions, subroutines, modules, or abstract datatypes, is usually a contiguous piece of program text. The experiment reported here shows that programmers also routinely break programs into one kind of coherent piece which is not coniguous. When debugging unfamiliar programs programmers use program pieces called slices which are sets of statements related by their flow of data. The statements in a slice are not necessarily textually contiguous, but may be scattered through a program.
Research and Advances

Reducing dictionary size by using a hashing technique

Peterson [3] described a variety of techniques to implement a spelling checker for plain-language documents and discussed the central importance of the structure and size of the dictionary used by such a program. The technique presented here can produce a compact, easily accessed and modified dictionary. This is done by exploiting two characteristics of the spelling checker: the sole use of the dictionary is to determine whether given strings are, or are not, in the dictionary; and a small, but nonzero probability of error is acceptable in many applications. Many other types of programs have similar characteristics and could use this concept equally well.

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More