When Adrian Sampson was young, he was fascinated by the idea that computers could do the things they did because a person programmed them. To him programming seemed more like a magical power than a human competency. By the time he was a teenager, he had taught himself some of the ‘magic.’ “I was always a nerdy kid,” says Sampson. “I would plow through over-my-head textbooks about programming languages. When I was twelve I started a software company. I sold floppy disks through the mail. The first one I sold would trick your ISP into believing you were active so it wouldn’t drop your connection.”
Sampson does not sell floppy disks with his software on them any more. Now, he is an assistant professor in the Department of Computer Science at Cornell. These days, most of his work focuses on approximate computing, which is the idea that computers can be more efficient if they are allowed to be a little imperfect. “To help programmers trade off accuracy for efficiency, we need new languages, tools, processors, accelerators, memories, and compilers.” Sampson’s main interest is the interface between hardware and software—between programming languages and computer architecture. It is at this interface where he sees room for large gains in efficiency.
Sampson, who grew up on Bainbridge Island near Seattle, decided to major in computer science at Harvey Mudd College in Claremont, Calif. “Harvey Mudd was great for me,” says Sampson. “It was small and there was a real emphasis on community—I felt very supported through what was a grueling academic program.” Between the second and third years of Sampson’s undergraduate studies he participated in a National Science Foundation (NSF) research experience for undergraduates to help him decide if graduate school might be something he should pursue. He worked on computer science theory and algorithms, found it “harrowing,” and loved it.
After graduating from Harvey Mudd in 2009, Sampson moved to Seattle to attend the University of Washington and earn a Ph.D. in Computer Science and Engineering, working with advisors Luis Ceze and Dan Grossman. In 2013, while working toward his doctorate, Sampson won a Qualcomm Innovation Fellowship along with his fellow student Thierry Moreau. This fellowship allowed them to work on their ideas for approximate computing accelerators, which would decrease energy consumption and increase computer performance by allowing computers to be less precise. “Computers spend a lot of time and energy ensuring that everything they compute is exactly correct,” says Sampson. “But for many of the most important tasks, uncompromising precision in not really necessary.” Much of Sampson’s current work at Cornell grew out of these early explorations.
Sampson reports that by the time he was halfway through his Ph.D. program, he knew he wanted to go into academia and become a professor. “I was pretty sure it would be a good job for me,” says Sampson, now in his first month as a professor, “because being an academic allows you some freedom to choose your own path. Cornell’s Computer Science Department is great for me for so many reasons. The programming languages group is great. The architecture group is really strong. There is a unique culture at Cornell CS—there’s a sense of community between grad students and faculty that is based in both simple humanity and in productivity.”
In the fall of 2016 Sampson will be teaching an undergraduate elective course and in the spring semester of 2017 he will teach a graduate-level elective. In addition to teaching, Sampson will continue his research into hardware-software abstractions, including computer architecture, programming languages, compilers, and software engineering.