Homepage
I am an assistant professor at Boise State University. My research interests are at the intersection of cybersecurity, software engineering, and formal methods. Society depends on physical systems (e.g., critical infrastructure like water treatment plants, robotic systems) that are increasingly integrated with cyber controls that contain vulnerabilities. These vulnerabilities should be eliminated by improving the state-of-the-art of software engineering. This can be accomplished by leveraging results from formal methods, a field that uses mathematically rigorous techniques to analyze systems, to improve our standards of practice.
Prior to joining Boise State, I was a formal methods scientist at Idaho National Laboratory, where I maintain a joint appointment. Before Idaho National Laboratory, I was a student at The Ohio State University. My advisors are Drs. Feng Qin and Christopher Stewart.
Recent Blog Posts
Rust: Generics Considered Colorful
Published:
This post shows that Rust’s generics are colorful. I’ll demonstrate an example to show what I mean, and what the problems are.
A Concept and Template Meta-programming Approach to Session Types in C++
Published:
Introduction
Programs communicate – whether with other programs or humans. Software developers write programs with a protocol in mind. Sometimes there’s documentation for the protocol. But there’s no mechanism that keeps implementation and documentation in sync. Bugs occur when protocols diverge.
Using F* to Formally Verify Programs
Published:
Formal methods are currently not widely embraced due to their perceived difficulty. However, the landscape is changing with the emergence of new technologies that make formal methods more accessible than ever before. F*, developed by Microsoft Research, is a groundbreaking functional language that combines dependent types and proof-oriented features. By bridging the gap between programming and proving, F* facilitates a gradual adoption of formal methods by software engineers. In this post, I will provide an introduction to the basics of F* and demonstrate how we can leverage its capabilities to verify a solution to a LeetCode problem. I can’t cover all the background material needed to understand F* in this post. I assume that you have some experience in a language like Haskell or OCaml.
A LISP REPL Inside ChatGPT
Published:
TL;DR: ChatGPT is a LISP REPL.
Programming Puzzle: Optimal Pothole Repair
Published:
This post discusses how to efficiently schedule optimal pothole repair!