The Research archive provides access to all Research articles published in past issues of Communications of the ACM.
Software misbehaves all too often. This is a truism, but also the driving force behind many computing techniques intended to increase software reliability, safety, and security, ranging from basic testing to full formal verification…
High-level computer applications build on services provided by lower-level software layers. Unfortunately, today's low-level software still suffers from a steady stream of bugs, often leaving computers vulnerable to attack…
In a social network, nodes correspond to people or other social entities, and edges correspond to social links between them. We describe a family of attacks such that it is possible to learn whether edges exist or not between…
We live in an era of data abundance. Every aspect of our online and offline behavior is captured and analyzed. The companies holding our data face the responsibility for protecting our privacy, especially as they sell and exchange…