Research

CRAFT logo

My research interests sit at the intersection of three subfields of computer science: 1) program analysis, 2) systems tools, and 3) high-performance computing (HPC).

analysis/tools/HPC diagram

I am fascinated by the concept of writing computer programs that accept other programs as input. There are a wide variety of such programs, including compilers, debuggers, and performance tools. Most of these require at least some level of systems knowledge, and some of them require extensive systems tools experience.

Historically, my research projects have focused on analyzing the floating-point behavior of scientific computing programs, something that is very important in HPC. I focus on providing tools that run on real systems and real codes, with minimal dependencies and relatively low overheads.

My specific contributions include a software framework that enables floating-point program analysis at the binary level, as well as specific techniques for cancellation detection, mixed-precision configuration, reduced-precision sensitivity analysis, and shadow-value analysis and simulation. I have also worked on integrating tools that together allow for source-level analysis.

More recently, I have been working with colleagues in the Math & Stats department on porting and optimizing a power series approach to solving ODEs, as well as visualizing system parameter changes and sensitivities.

I am also interested in the pedagogy of teaching systems. I have made significant contributions to the systems sequence at JMU, including the primary design and course materials for two of the advanced systems electives (CS 432 and CS 470). I also created many components of CS 261, several of which have led to publications in CS education venues.

Please see my CV for a list of publications.

Software repositories for ongoing projects:

As a contribution to the community, I maintain an exhaustive list (as far as I am aware) of floating-point analysis software tools.

I also have students conduct small research projects as part of my CS 470 (Parallel and Distributed Systems) class, some of which have led to peer-reviewed publications. I have begun a list of some of those class projects.

Finally, I have a High-Performance Analysis research lab with another faculty member Dr. Weikle. We have had several students working on various projects over the past few years.

If you are interested in doing research with me, please come to office hours or send me an email to schedule another time to talk in person.