Charles Curtsinger, a doctoral candidate in Computer Science, recently received a prestigious 2012 Google Fellowship in Software Performance, one of only 14 Google PhD Student Fellowships awarded in the United States and Canada this year. With the two-year award, Curtsinger will receive funding for tuition, fees and a yearly stipend, plus access to a Google research mentor.
"Being a Google fellow is an honor and a long-term benefit for me,” says Curtsinger. “The connection with top researchers, innovative people and the experience will be great for my whole career.”
Curtsinger’s advisor, Emery Berger, says, “Charlie is a star: an exceptional graduate student who is well-deserving of this award. He not only has tremendous depth of knowledge in systems and programming languages, but also has breadth across computer science; his ability to see connections across them, and use those skills to attack problems in systems, is powerful.”
Curtsinger works in Berger’s Programming Languages and Systems Lab, where he focuses on developing automatic methods for analyzing application performance. The goal is to make it easy for programmers to find and fix performance problems and make software faster.
He explains, “People need to know how their software programs are running and how this could change in difficult situations. It applies to everyone from experts who use software to manage strategic nuclear weapons stores or to analyze genomes, to consumers who care about the speed of programs on their home PC. That’s more where my focus is, but a lot of the same ideas apply. There are tricks that claim to get a 1 or 2 percent boost in performance, but it’s not at all clear if that’s significant to performance. We design systematic tools that isolate each part of your software’s routine in turn to ask whether a particular intervention makes a significant performance difference or not.”
Curtsinger is also the lead student researcher on the project, “Causal profiling: low-overhead, high-precision profiling,” for which Berger received a Google Faculty Research Award in 2011.
Computer scientists and software developers routinely use a profiler to determine how much time a program spends on each task, Curtsinger says. “Sometimes making something faster doesn’t make the whole program run faster, even if you spend most time there. We pick a spot at random, make it run slower, then check overall performance. If it doesn’t change, it’s unlikely that trying to speed it up would have an effect. This helps prioritize where you spend your efforts.”
The highly selective Google U.S./Canada PhD Student Fellowship Program was created to recognize exemplary doctoral students in computer science and related research areas. Google has given these students unique fellowships to acknowledge their contributions to their areas of specialty and provide funding for their education and research.
A native of Roseville, Minn., Curtsinger is currently a summer intern at IBM. He was an intern at Microsoft in 2010 and received honorable mention from the National Science Foundation for his proposals to its Graduate Research Fellowship Program competition in both 2009 and 2010.