July 1973 - Vol. 16 No. 7
Features
Managing the computer resource: a stage hypothesis
Based on the study of expenditures for data processing, a descriptive stage hypothesis is presented. It is suggested that the planning, organizing, and controlling activities associated with managing the computer resource will change in character over a period of time, and will evolve in patterns roughly correlated to four stages of the computer budget: Stage I (computer acquisition), Stage II (intense system development), Stage III (proliferation of controls), and Stage IV (user/service orientation). Each stage is described and related to individual tasks for managing the computer resource.
A note on information organization and storage
Since the logical structure of a data base can be represented by a tree or graph, it is quite natural for us to view the process of designing a data base as that of constructing a tree or a graph. A general method for constructing such a tree or graph is provided. There are three important elements in this general construction method; namely, a set of binary relations, an algorithm for constructing subsets of a set, and an algorithm for selecting an element from the given set of objects. The use of different relations and algorithms results in different information structures, as list, tree, ring, etc. Thus the problem of information organization and storage is reduced to that of defining relations and formulating algorithms under a given set of constraints. The results presented may be valuable to designers as useful design concepts, and may serve as a basis for developing a formal theory on the subject.
COKO III: the Cooper-Koz chess program
OKO III is a chess player written entirely in Fortran. On the IBM 360-65, COKO III plays a minimal chess game at the rate of .2 sec cpu time per move, with a level close to lower chess club play. A selective tree searching procedure controlled by tactical chess logistics allows a deployment of multiple minimal game calculations to achieve some optimal move selection. The tree searching algorithms are the heart of COKO's effectiveness, yet they are conceptually simple. In addition, an interesting phenomenon called a tree searching catastrophe has plagued COKO's entire development just as it troubles a human player. Standard exponential growth is curbed to a large extent by the definition and trimming of the Fisher set. A clear distinction between tree pruning and selective tree searching is also made. Representation of the chess environment is described along with a strategical preanalysis procedure that maps the Lasker regions. Specific chess algorithms are described which could be used as a command structure by anyone desiring to do some chess program experimentation. A comparison is made of some mysterious actions of human players and COKO III.
Mixed solutions for the deadlock problem
Mixtures of detection, avoidance, and prevention provide more effective and practical solutions to the deadlock problem than any one of these alone. The individual techniques can be tailored for subproblems of resource allocation and still operate together to prevent deadlocks. This paper presents a method, based on the concept of the hierarchical operating system, for constructing appropriate mixtures and suggests appropriate subsystems for the most frequently occurring resource allocation problems
The distribution of a program in primary and fast buffer storage
A virtual memory computer system with a fast buffer (cache) memory between primary memory and the central processing unit is considered. The optimal distribution of a program between the buffer and primary memory is studied using the program's lifetime function. Expressions for the distribution of a program which maximizes the useful fraction of the cost-time integral of primary and fast buffer storage are obtained for swapping and nonswapping buffer management policies.
This paper presents the goals and organization of a course about programming designed to provide entering students in a graduate program with a cultural enrichment in their professional lives. The students are expected to have taken at least two programming courses prior to this one and, therefore, to be familiar with at least two programming languages, both as students and users.
Teaching someone how to program is similar to teaching him to play a musical instrument: neither skill can be taught—they must be learned. However, the teacher still serves several vital purposes: to present a set of rules for producing well-formed utterances; to offer numerous demonstrations of his own skill; and to function as an involved critic. Finally, the teacher is the source of information about the process in which the student is involved.
An addendum to the Report of the ACM Curriculum Committee on Computer Education for Management is proposed. The proposed addendum is to include in the curriculum a course on Information Systems Administration. It is important for two reasons: (1) the systems designer must understand the administrative framework in which he must operate to work effectively, and (2) an important objective of the curriculum recommendations is to prepare the future manager of the computer activity. It is felt that the importance of these two reasons justifies the addition of the recommended course. The course is outlined in the format of the original report.
Computer science—seminars for undergraduates
In recent years a number of curricula for computer science education have been proposed. Most notable among these are [1-4]. The results from these four studies were unbalanced oriented educational programs each with a different primary emphasis on various aspects of computer science and its application. None offered a prescription within the undergraduate framework for a satisfactory synthesis of hardware, software, and abstract theory.
Multiple exits from a loop without the GOTO
For several years, there has been discussion about the use of the goto statement in programming languages [1, 2]. It has been pointed out that goto free programs tend to be easier to understand, allow better optimization by the compiler, and are better suited for an eventual proof of correctness. On the other hand, the goto statement is a flexible tool for many programmers. Most programming languages have constructs which allow the programmer to write control flows that occur frequently without the use of a goto. In particular, the language Pascal [3] contains, besides the goto, the following control structures: if-then-else, case, while-do, repeat-until, stepping loop. Wulf [4] has described the use of the construct “leave &lpargt;label⦔” in the language Bliss, where &lpargt;label⦔ is the name of a program section which is exited when the statement is executed. It is important to note that these constructs are invented to describe control flows that occur frequently in programs. They describe the flow on a higher level [5] than an equivalent construction using a goto would do.
Equivalence between AND/OR graphs and context-free grammars
Recent research in artificial intelligence has led to AND/OR graphs as a model of problem decomposition (Nilsson [3]; Simon and Lee [4]). However, AND/OR graphs of a restricted type are equivalent to context-free grammars. This can be set-up formally (the beginnings of a formalism of AND/OR graphs is contained in [4]), but the formalism is so obvious that a brief discussion and example suffice.
Algorithm 449: solution of linear programming problems in 0-1 variables
This subroutine solves the linear zero-one programming problem of the following form.