An ideal solution to satisfying the dual goals of protecting data confidentiality and running computations is to enable a server to compute over encrypted data,...Raluca Ada Popa, Catherine M. S. Redfield, Nickolai Zeldovich, Hari Balakrishnan From Communications of the ACM | September 2012
As information technology has come to permeate our society, broader classes of users have developed the need for more sophisticated data manipulation and processing...Martin C. Rinard From Communications of the ACM | August 2012
Millions of computer end users need to perform tasks over large spreadsheet data, yet lack the programming knowledge to do such tasks automatically. We present...Sumit Gulwani, William R. Harris, Rishabh Singh From Communications of the ACM | August 2012
Like other IT fields, computer architects initially reported incomparable results. We quickly saw the folly of this approach. We then went through a sequence...David Patterson From Communications of the ACM | July 2012
The past 10 years have delivered two significant revolutions. Microprocessor design has been transformed — leading to multicore processors. And an entirely new...Hadi Esmaeilzadeh, Ting Cao, Xi Yang, Stephen M. Blackburn, Kathryn S. McKinley From Communications of the ACM | July 2012
Good software engineering practice demands generalization and abstraction, whereas high performance demands specialization and concretization. These goals are at...Tiark Rompf, Martin Odersky From Communications of the ACM | June 2012
"The fox knows many things, but the hedgehog knows one big thing." Philosophers have used this line, attributed to the ancient Greek poet Archilochus, to capture...Peter Lee From Communications of the ACM | June 2012
It is widely held that parallel programming is far more difficult and error prone than writing sequential code. In particular, the myriad allowable interleavings...Steven Hand From Communications of the ACM | May 2012
We introduce a new parallel programming model addressing the issues facing current methods of executing parallel programs deterministically, and use Determinator...Amittai Aviram, Shu-Chun Weng, Sen Hu, Bryan Ford From Communications of the ACM | May 2012
Say you want to simulate the motion over time of the stars in a galaxy to learn about how galaxies formed and why the universe appears as it does. Is it feasible...William Gropp From Communications of the ACM | May 2012
We describe a parallel fast multipole method for highly nonuniform distributions of particles. We employ both distributed memory parallelism and shared memory parallelism...Ilya Lashuk, Aparna Chandramowlishwaran, Harper Langston, Tuan-Anh Nguyen, Rahul Sampath, Aashay Shringarpure, Richard Vuduc, Lexing Ying, Denis Zorin, George Biros From Communications of the ACM | May 2012
With Aardvark, a social search engine, users ask a question, either by IM, e-mail, Web input, text message, or voice. Aardvark then routes the question to the person...Damon Horowitz, Sepandar D. Kamvar From Communications of the ACM | April 2012
It is difficult to remember what people had to do to find the answer to a question before the Web. One option might be to call a friend who might know the answer...Ed H. Chi From Communications of the ACM | April 2012
Affordable personal computing hardware and the usable GUI-based PC operating systems made the vision of "a computer on every desktop and in every home" a reality...Steven D. Gribble From Communications of the ACM | March 2012
Capsicum is a lightweight operating system capability and sandbox framework planned for inclusion in FreeBSD 9. Capsicum extends, rather than replaces, UNIX APIs...Robert N. M. Watson, Jonathan Anderson, Ben Laurie, Kris Kennaway From Communications of the ACM | March 2012
The following paper by Viktor Kuncak et al. integrates declarative programming into a general-purpose language, allowing one to escape the host language when...Rastislav Bodik From Communications of the ACM | February 2012
Automated synthesis of program fragments from specifications can make programs easier to write and easier to reason about. To integrate synthesis into programming...Viktor Kuncak, Mikaƫl Mayer, Ruzica Piskac, Philippe Suter From Communications of the ACM | February 2012
Software misbehaves all too often. This is a truism, but also the driving force behind many computing techniques intended to increase software reliability, safety...Xavier Leroy From Communications of the ACM | December 2011
High-level computer applications build on services provided by lower-level software layers. Unfortunately, today's low-level software still suffers from a steady...Jean Yang, Chris Hawblitzel From Communications of the ACM | December 2011
The following paper combines two important themes in secure computing: assurance and information flow control. For high assurance, a system's Trusted Computing...Butler Lampson From Communications of the ACM | November 2011