My research interests are in compilers both for embedded and
general-purpose systems, as well as computer security. Specific
current interests include:

Binary rewriting
This
effort is concerned with how to rewrite binaries with the least amount
of restrictions, and in the most general manner. Support: This project is partially supported by National
Science Foundation (NSF) grants #0720683 and #0916903.

Automatic
parallelization.
This project aims to automatically convert serial programs into
parallel programs.Support: This project is partially supported by the
Defense Advanced Research Projects Agency (DARPA) under an AACE
contract. This 2-page
brochure outlines the project.

Compilation for
fine-grained architectures. Supporting pre-fetching and nested
parallelism in a compiler for the XMT machine, a fine-grained
architecture being built at UMD.Support: This project is partially supported by National
Science Foundation grant #0834373.

Memory management
for embedded systems. How to allocate data and instructions in
embedded systems to specific memories such as scratch-pad memories and
lockable caches.Support: This project is partially supported by National
Science Foundation (NSF) grant #0720683, and
in the past by NSF grants #0133519 and #0410565.

Security policy
enforcement.
How to enforce security policies and access restrictions using a
binary rewriter.

I also have worked on projects related to memory safety and real-time
wireless media-access protocols in the past.

See the publications list for
publications in many of the above areas.

Teaching:

Websites of all courses since Fall 2007 are available on the
University's online Blackboard system
(to registered students only.) The websites of older courses are
linked below.