acm-header
Sign In

Communications of the ACM

Table of Contents


ACM forum


Programming pearls: Writing correct programs

In the late 1960s people were talking about the promise of programs that verify the correctness of other programs. Unfortunately, it is now the middle of the 1980s, and, with precious few exceptions, there is still little more …

Meeting the crisis in computer science

Participants in the 1982 Snowbird Conference reassessed the problems in computer science education and recommended steps for improvement.

A survey of attitudes toward computers

What do people really think about computers and their impact? In 1970, a study of people's attitudes in North America showed computers to be regarded as either “beneficial tools of mankind” or as “awesome thinking machines.”  …

A user-friendly software environment for the novice programmer

SOLO, a nonnumerical programming language, was developed at The Open University in the U.K. to support a course on Cognitive Psychology. It was designed to acquaint students as painlessly as possible with the computing fundamentals …

Transporting a portable operating system: UNIX to an IBM minicomputer

The “portable” UNIX operating system was transported to an IBM Series/1 minicomputer. The process of transporting is described with emphasis on (1) adapting to the target machine architecture; (2) the selection of the approach …

Balancing binary trees by internal path reduction

We present an algorithm for balancing binary search trees. In this algorithm single or double rotations are performed when they decrease the internal path of the total tree. It is shown that the worst internal path on such trees …

Reducing the retrieval time of hashing method by using predictors

Many methods for resolving collisions in hashing techniques have been proposed. They are classified into two main categories: open addressing and chaining. In this paper, other methods are presented that are intermediate between …

Viewpoint: mathematics today—sprucing up the old queen