I am an assistant professor of Computer Science at the University of California, Los Angeles. I design, build and analyze computer architectures. Broadly, my research is about breaking and reforming traditional abstractions across applications, programming languages, compilers, the hardware/software interface, and microarchitectures, with the goal of enabling high productivity and performance in an increasingly parallel and heterogeneous computing landscape. See my research page for more details.

Recent Things


I am actively recruiting new Ph.D. students. I am looking for highly motivated, hard-working students with experience in architecture design, RTL, compilers, architecture simulators, and more. See the recruiting page for more details.


I joined UCLA as an assistant professor in January 2017. Before that I worked in the Vertical research group at the University of Wisconsin - Madison (old webpage). My thesis research studied modularized processor cores, which are high-performance cores separated into specialized processors or accelerators towards broad program behaviors. I designed new accelerators, created novel architectural modeling techniques, and developed an optimization based instruction scheduler for this hardware.

My work was recognized with several awards, including IEEE Micro Top Picks in Computer Architecture of 2016 and 2017 (Top 12 papers in field each year), a distinguished paper award for PLDI (Programming Language Design and Implementation), and a “best of” award for IEEE CAL (Computer Architecture Letters). I also received the Google Fellowship in Computer Architecture in 2014. Finally, I co-wrote a synthesis lecture on mathematical modeling and optimization, as it applies to computer architecture.

I did my undergraduate studies at the University of Minnesota (my home state <3) in both Computer Science and Computer Engineering, and was a research assistant at the Laboratory for Computational Science and Engineering (LCSE).