• Carnegie Mellon University
  • Software and Societal Systems
  • TCS Hall 224
  • icmccorm@cs.cmu.edu

Research

I’m a PhD student in Software Engineering at Carnegie Mellon University’s Software and Societal Systems Department (S3D). I am advised by Dr. Jonathan Aldrich and Dr. Joshua Sunshine.

I focus on the intersection of human-computer interaction and formal methods. Currently, I’m studying the unsafe features of the Rust programming language, which are necessary for systems programming but difficult to use correctly. I’m examining developers’ challenges when writing unsafe Rust and designing new tools to address them.

Prior to my focus Rust, I collaborated with Jenna Wise on the design and implementation of Gradual C0, a gradual verification tool for the C0 programming language. In 2022, we evaluated this approach against multiple, fully-dynamic baselines and observed a significant reduction in runtime overhead.

Education

I attended the University of Wisconsin-Eau Claire from 2017 to 2021, where I completed a double major in Computer Science and English, with an emphasis on rhetoric of science, technology, and culture. I was introduced to Computer Science research by Chris Johnson. We studied direct manipulation programming systems for creating animations, which emphasized the importance of user-oriented design and programming language fundamentals.

In 2020, I was accepted into CMU’s REUSE program, where I joined a collaboration between CMU and Arizona State University. We created TTPython, a macroprogramming systems for the Internet of Things. We used our prototype to reimplement a mock autonomous vehicle intersection and observed significantly reduced latency between devices, demonstrating how improving usability can lead to objective increases in performance.

My current research on unsafe Rust is funded by the National Science Foundation’s Graduate Research Fellowship Program (GRFP). It continues in the sprit of each of my past projects, translating developers challenges into solutions that improve usability and demonstrably improve performance or quality metrics.