Sign In

Communications of the ACM

Table of Contents

The Strength of Encryption

Some of the most perplexing and frustrating experiences that technologists have are with politics and social policy. One that is currently playing out involves encryption, and what (if anything) should be done to regulate it.

Computer Science in the Curriculum

Computer science is in significant measure all about analyzing problems, breaking them down into manageable parts, finding solutions, and integrating the results. The skills needed for this kind of thinking apply to more than …
DEPARTMENT: Letters to the Editor

ACM Moral Imperatives vs. Lethal Autonomous Weapons

I concur with Moshe Y. Vardi's Editor's Letter "On Lethal Autonomous Weapons" (Dec. 2015) but think the answer to his philosophical logjam is readily available in the "ACM Code of Ethics and Professional Conduct."  

The Value of Ada

Valerie Barr considers the continuing attraction of the woman considered the first computer programmer.

Deep or Shallow, NLP Is Breaking Out

Neural net advances improve computers' language ability in many fields.

Rich Data, Poor Fields

Diverse technologies help farmers produce food in resource-poor areas.

When Computers Stand in the Schoolhouse Door

Classification algorithms can lead to biased decisions, so researchers are trying to identify such biases and root them out.

Peter Naur: 1928-2016

Peter Naur, a Danish computer scientist and 2005 recipient of the ACM A.M. Turing Award, died recently after a brief illness.
COLUMN: Legally speaking

New Exemptions to Anti-Circumvention Rules

Allowing some reverse engineering of technical measures for non-infringing purposes.
COLUMN: Computing ethics

The Question of Information Justice

Information justice is both a business concern and a moral question.
COLUMN: The profession of IT

Fifty Years of Operating Systems

A recent celebration of 50 years of operating system research yields lessons for all professionals in designing offers for their clients.
COLUMN: Broadening participation

The Need For Research in Broadening Participation

In addition to alliances created for broadening participation in computing, research is required to better utilize the knowledge they have produced.
COLUMN: Viewpoint

Riding and Thriving on the API Hype Cycle

Guidelines for the enterprise.

Paper Presentation at Conferences: Time For a Reset

Seeking an improved paper presentation process.
COLUMN: Interview

An Interview with Stanford University President John Hennessy

Stanford University President John Hennessy discusses his academic and industry experiences in Silicon Valley with UC Berkeley CS Professor David Patterson.
SECTION: Practice

A Purpose-Built Global Network: Google's Move to SDN

A discussion with Amin Vahdat, David Clark, and Jennifer Rexford.

The Paradox of Autonomy and Recognition

Thoughts on trust and merit in software team culture.

Automation Should Be Like Iron Man, Not Ultron

The "Leftover Principle" requires increasingly more highly skilled humans.
SECTION: Contributed articles

Repeatability in Computer Systems Research

To encourage repeatable research, fund repeatability engineering and reward commitments to sharing research artifacts.

Lessons Learned from 30 Years of MINIX

MINIX shows even an operating system can be made to be self-healing.

A Lightweight Methodology For Rapid Ontology Engineering

UPON Lite focuses on users, typically domain experts without ontology expertise, minimizing the role of ontology engineers.
SECTION: Review articles

Hopes, Fears, and Software Obfuscation

What does it mean to be secure?
SECTION: Research highlights

Technical Perspective: Stacking Up Undefined Behaviors

In "A Differential Approach to Undefined Behavior Detection," Wang et al. hypothesize that any time a compiler is able to delete code by using reasoning based on undefined behavior, the program being compiled probably contains …

A Differential Approach to Undefined Behavior Detection

This paper studies undefined behavior arising in systems programming languages such as C/C++. We introduce a new static checker called STACK that precisely identifies undefined behavior bugs.

Technical Perspective: Taming the Name Game

In "Learning to Name Objects," the authors offer a method to determine a basic-level category name for an object in an image.

Learning to Name Objects

This paper looks at the problem of predicting category labels that mimic how human observers would name objects.
COLUMN: Last byte

Q&A: A Graphics and Hypertext Innovator

Andries van Dam on interfaces, interaction, and why he still teaches undergraduates.