Sign In

Communications of the ACM

Table of Contents

Is Information Technology Destroying the Middle Class?

While optimists argue that though technology always destroy jobs, it also creates new jobs, pessimists argue that the speed in which information technology is currently destroying jobs is unparalleled.

There Is Nothing New Under the Sun

Centuries before George Boole and Charles Babbage, the notion of binary encoding was well known and apparently even used! Julius Caesar was known to use a simple rotational cipher. Francis Bacon devised a binary encoding scheme …
DEPARTMENT: Letters to the Editor

Software Engineering, Like Electrical Engineering

Though I agree with the opening lines of "A New Software Engineering" (Dec. 2014) outlining the "promise of rigorous, disciplined, professional practices," we must also look at "craft" in software engineering if we hope to raise …

What's the Best Way to Teach Computer Science to Beginners?

Mark Guzdial questions the practice of teaching programming to new CS students by having them practice programming largely on their own.

Visualizing Sound

New techniques capture speech by looking for the vibrations it causes.

Online Privacy: Regional Differences

How do the U.S., Europe, and Japan differ in their approaches to data protection — and what are they doing about it?

Using Technology to Help People

Companies are creating technological solutions for individuals, then generalizing them to broader populations that need similar assistance.
COLUMN: Privacy and security

We Need a Building Code For Building Code

A proposal for a framework for code requirements addressing primary sources of vulnerabilities for building systems.
COLUMN: Economic and business dimensions

Three Paradoxes of Building Platforms

Insights into creating China's Taobao online marketplace ecosystem.
COLUMN: Inside risks

Far-Sighted Thinking About Deleterious Computer-Related Events

Considerably more anticipation is needed for what might seriously go wrong.
COLUMN: Education

Putting the Computer Science in Computing Education Research

Investing in computing education research to transform computer science education.
COLUMN: Kode vicious

Too Big to Fail

Visibility leads to debuggability.
COLUMN: Viewpoint

Do-It-Yourself Textbook Publishing

Comparing experiences publishing textbooks using traditional publishers and do-it-yourself methods.

In Defense of Soundiness: A Manifesto

Soundy is the new sound.
SECTION: Practice

Securing Network Time Protocol

Crackers discover how to use NTP as a weapon for abuse.

Model-Based Testing: Where Does It Stand?

MBT has positive effects on efficiency and effectiveness, even if it only partially fulfills high expectations.
SECTION: Contributed articles

To Govern IT, or Not to Govern IT?

Business leaders may bemoan the burdens of governing IT, but the alternative could be much worse.

Automated Support For Diagnosis and Repair

Model checking and logic-based learning together deliver automated support, especially in adaptive and autonomous systems.
SECTION: Review articles

Verifying Computations Without Reexecuting Them

From theoretical possibility to near practicality.
SECTION: Research highlights

Technical Perspective: The Equivalence Problem For Finite Automata

As the equivalence problem is essential in many applications, we need algorithms that avoid the worst-case complexity as often as possible. In "Hacking Nondeterminism with Induction and Coinduction," Filippo Bonchi and Damien …

Hacking Nondeterminism with Induction and Coinduction

We introduce bisimulation up to congruence as a technique for proving language equivalence of nondeterministic finite automata.
COLUMN: Last byte

Upstart Puzzles: Take Your Seats

A popular logic game involves figuring out an arrangement of people sitting around a circular table based on hints about, say, their relationships. Here, we aim to determine the smallest number of hints sufficient to specify …