Research Overview

Broadly, my research interests are in computer architecture.  More specifically, I conduct research on core micro-architecture, architectural support for security, simulation methodologies, and micro-architectural applications for emerging technologies.

Core Mico-Architecture and Software/Hardware Co-Design

Processors must execute the instructions of programs according to the ISA's semantics. However, as long as correctness is ensured, there is significant room for innovation in the implementation of how the processor execute the instructions.  Core micro-architecture research examines how to design the processor core to be better: whether faster, more energy-efficient, or any other metric that one might desire.  Sometimes, we can improve on this design even more by designing software and hardware together.  Such software often includes the compiler and/or operating system.

Publications in this research area include:


Simulation Methodologies

Computer architects often experimentally evaluate their ideas using simulations.  These results are used to determine how good or bad a research idea is, and to convince others of its merit.  However, the proper simulation methodology is required to ensure meaningful results.

Publications in this research area include:

Architectural Support For Security

Security is an important consideration in all systems, and is becoming more and more important.   Hardware can provide support for security in ways that software either cannot do, or can do much less efficiently. 

Publications in this research area include:


While my primary research area is technical, I do work on improving programming education.   While most of my programming education work is focused on delivering content that is useable to students (All of Programming, and my Coursera Specializations), here are the items that have appeared in CS Education venues.