Undergraduate Research and Innovation Scholar
- Software Design and Programming Languages
Charles E. Leiserson
Code instrumentation is the practice of adding code to an existing software to measure performance and check for errors. Instrumentation can be integrated during and after the building process of a software. Instrumentation requires a thorough understanding of the software state at different phases, raising the entrance barrier for developers from writing instrumentation tools. My research exposes instrumentation at different phases through a single abstraction layer. Custom instrumentation tools are then built on top of this layer. Instrumented programs may run more slowly and require more memory due to the extra code. One of the biggest challenges is testing various designs of the abstraction layer to achieve a design that will minimize these side effects, known as instrumentation overhead.
I enrolled in SuperUROP because when else is there time to work on one’ s own project alongside professors? I took Advanced Performance-Engineering for Multicore Applications (6.S898), a research project-focused continuation of Performance Engineering of Software Systems (6.172), working with compilers and CPU optimizations. There was so much left from 6.S898, but I didn’ t want to lock my options and wait until graduate school to continue working on what excites me the most: getting dirty with code optimization and instrumentation.