Sign In

Communications of the ACM

Table of Contents

News track

President's letter


Ecological studies of professional programmers

For over two decades, software psychology researchers have been developing insights to software productivity and quality by investigating builders and users of software. This research has been diverse in both its approach and …

Designing documentation to compensate for delocalized plans

Conceptual representation methods play a significant role in facilitating the software process. Recent studies explore and clarify the use of these representations and their impact on progress.

A field study of the software design process for large systems

The problems of designing large software systems were studied through interviewing personnel from 17 large projects. A layered behavioral model is used to analyze how three of these problems—the thin spread of application domain …

The designer as user: building requirements for design tools from design practice

Software tools that support the design and development of interactive computing systems are an exciting possibility. The potential pay-off is great: user interface management systems, for example, promise not only to speed the …

Using induction to design algorithms

An analogy between proving mathematical theorems and designing computer algorithms provides an elegant methodology for designing algorithms, explaining their behavior, and understanding their key ideas.

A thinning algorithm by contour generation

A new contour generating serial algorithm is faster and more efficient than conventional contour tracing and parallel algorithms

A note on chaos and Halley's method

Efficient table-free sampling methods for the exponential, Cauchy, and normal distributions

Three algorithms for sampling from exponential, Cauchy and normal distributions are developed. They are based on the "exact approximation" method, and their expected numbers of consumed uniform deviates are less than 1.04 per …

The number of buffers required for sequential processing of a disk file

The number of buffers required for sequential processing of disk files is investigated with the assumption that there is a single user served by two processors: one reads blocks from the disk into buffers in main memory, while …

Relaxed heaps: an alternative to Fibonacci heaps with applications to parallel computation

The relaxed heap is a priority queue data structure that achieves the same amortized time bounds as the Fibonacci heap—a sequence of m decrease_key and n delete_min operations takes time O(m + n log n). A variant of relaxed heaps …