Now Available: Innovators Under 35 2013 See The 2013 List »
Kim Hazelwood, 34
Reëngineering software on the fly
University of Virginia

The reprogrammer: Kim Hazelwood's technology allows computers to adjust software so it works better with the hardware it's running on.
Credit: Eli Meir Kaplan
Imagine having a team of mechanics pull apart and retune your car's engine as you hurtle down the highway, without making the engine miss a stroke. That's the nature of the challenge that motivates Kim Hazelwood, an assistant professor of computer science, who has created tools to rewrite software as a computer is executing it. Before she started working on the problem in grad school, "I would have said there's no way you can just take programs and change them and have every program work," says Hazelwood. But industry giants like Intel and researchers around the world have used her subsequent achievements to do just that.
Hazelwood's approach contradicts one of the most important notions in computer programming--abstraction. Abstraction means that software is built in layers: an application runs on top of an operating system, which runs on top of the hardware. Each layer does its best to conceal its inner workings. That way, someone writing, say, a Web browser doesn't have to know all the engineering that went into a processor. At times, however, it would be useful for the application and hardware layers to communicate more directly. For example, some modern processors reduce electricity consumption by turning off portions of the chip until they are needed, but an application that causes this to happen excessively can shorten the life of the chip. Hazelwood's software can monitor the processor and detect when subsystems are being turned off and on too often. It then analyzes the software instructions that are triggering the problem and substitutes more hardware-friendly commands that do the same job.
The ability to monitor and modify applications while they're running could be widely useful. For example, it could make it easier to compensate for hardware bugs, divide tasks among multiple processors, run software on different processor architectures, and even defend against malicious software. --Stephen Cass
2010 TR35 Winners
Aaron Dollar
Creating flexible robotic hands
Rikin Gandhi
Educating farmers through locally produced video
Kim Hazelwood
Reëngineering software on the fly
Indrani Medhi
Building interfaces for the illiterate
Andrey Rybalchenko
Stopping software from getting stuck in loops
T. Scott Saponas
Detecting complex gestures with an armband interface
Jian Sun
Better image searches
Richard Tibbetts
Reacting to large amounts of data in real time