Select your localized edition:

Close ×

More Ways to Connect

Discover one of our 28 local entrepreneurial communities »

Be the first to know as we launch in new countries and markets around the globe.

Interested in bringing MIT Technology Review to your local market?

MIT Technology ReviewMIT Technology Review - logo


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 (video)

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


More Innovators Under 35: