July 1986 - Vol. 29 No. 7
Features
Viewpoint: Military direction of academic CS research
Most computer scientists know that the Department of Defense (DOD) supplies most of the funds for academic research, but few know how profoundly the funding situation has changed over the last decade. In 1976 most basic research in academic computer science was funded by the National Science Foundation (NSF) [see Figure 1]. In 1985 NSF's "market share" is much less than DoD's.
When applied research money is added in, as in Figure 2 (on the next page), DOD'S preeminence is even more marked. Allowing $25 million for industrial, state, institutional, and other support in 1985 (exact data are unavailable), I conclude that most academic computer science (CS) research is now directed by military agencies.
The human aspects of computing: a note on this collection
What makes computer users happy? Can systems help humans to use them? Does programming sharpen other thinking skills? Is computer anxiety important? Will programmers use Ada packages? How do students learn programming concepts? Are spelling correctors at their limits? When does the work load on a terminal get too heavy? Are instruction sets too large?
These nine questions define some important issues for those of us who study human factors—the ways hardware and software affect, and are affected by, their users. Although the major accomplishments in the field will always rest on careful inspiration, to some degree these questions can be resolved empirically.
Generally, empirical work falls into three broad categories:
With experiments the goal is to determine whether some design or principle A is better than some design or principle B. Ideally, experimenters should make some tentative hypothesis first, or at least, decide what needs to be known.
In data collection the objective is to observe users, give questionnaires, examine listings, count errors, or otherwise record data. By examining such data, we are able to draw conclusions and discover trouble spots.
General observation is a method that involves complete systems or prototypes. These systems are observed, measured in broad ways, compared, or iteratively redesigned to complement the behavior of typical users. The goal is to understand the needs of users and to optimize system behavior.
Although not at all by choice, only the first two of these categories are represented in this collection.
As with most papers that are accepted and appear in print, the reviewers or editors have some special reason for liking a paper in the first place. This reason may not appear in the reviews of the paper, but it does capture some underlying point or principle deemed to be important.
Each of the articles in this special section is a short description of a study addressing one of the nine questions. The results of these studies do not always reinforce conventional wisdom. Some of the conclusions are provocative. I invite you to read the articles and to see whether you agree with their conclusions.
The results of a user questionnaire are used to determine the effects of 17 different independent variables on user satisfaction.
Appropriate mnemonic feedback built into a natural-language interface can act as a teacher to help users acquire formal-language skills as they work, without a large initial investment of effort in a learning period.
Learning to program and learning to think: what’s the connection?
Focusing on thinking skills that are cognitive components of programming—rather than on intellectual ability—can illuminate the relationship between learning a programming language and learning more about thinking processes.
Computer anxiety in management: myth or reality?
Although many informal surveys in the business press have contended that computer anxiety has a significant adverse impact on managers' willingness to use microcomputers, the problem is neither as extensive nor as severe as once believed.
Metrics for Ada packages: an initial study
Many novel features of Ada present programmers with a formidable learning task. The study of four first-time Ada programmers suggests that a background in the software engineering practices supported by Ada is necessary to learn to use the features of the language.
Novice mistakes: are the folk wisdoms correct?
An evaluation of two folk wisdoms serves to elucidate the underlying or "deep-structure" reasons for novice errors.
A note on undetected typing errors
Although human proofreading is still necessary, small, topic-specific word lists in spelling programs will minimize the occurrence of undetected typing errors.
Operator work load: when is enough enough?
Three measures of operator mental work load were tested with a large, interactive computer system. Two—operator rating of time stress, and the ratio of the time required to time allowed for each subtask—proved to be significant and easy to use.
Computer instruction set usage by programmers: an empirical investigation
The elimination of unused instruction sets would encourage more uniform programming practices and could allow the inclusion of more useful instructions.
Another look at automatic text-retrieval systems
Evidence from available studies comparing manual and automatic text-retrieval systems does not support the conclusion that intellectual content analysis produces better results than comparable automatic systems.
Software development of real-time systems
Concentrating on those aspects of software development peculiar to real-time systems, this collection of development methods and tools emphasizes incremental development; the testing of tusk interfaces during integration testing, as well as unit and partial integration testing on the development system; and the development of automated tools to assist in the testing process.
Planar point location using persistent search trees
A classical problem in computational geometry is the planar point location problem. This problem calls for preprocessing a polygonal subdivision of the plane defined by n line segments so that, given a sequence of points, the polygon containing each point can be determined quickly on-line. Several ways of solving this problem in O(log n) query time and O(n) space are known, but they are all rather complicated. We propose a simple O(log n)-query-time, O(n)-space solution, using persistent search trees. A persistent search tree differs from an ordinary search tree in that after an insertion or deletion, the old version of the tree can still be accessed. We develop a persistent form of binary search tree that supports insertions and deletions in the present and queries in the past. The time per query or update is O(log m), where m is the total number of updates, and the space needed is O(1) per update. Our planar point location algorithm is an immediate application of this data structure. The structure also provides an alternative to Chazelle's "hive graph" structure, which has a variety of applications in geometric retrieval.