Teaching§

I'm an associate professor of computer science at Illinois Wesleyan University.

As a member of a small department, I've developed and taught over a dozen courses across the CS curriculum. The list below links to syllabi for all of them. Additionally, I collect and curate resources for my classes in CS Codex.

Spring 2026:

All past courses:

Research§

Infeasible Constraint Systems§

A major focus of my research has been on analyzing infeasible constraint systems. Specifically, I have developed algorithms for extracting information about their infeasibility in the form of Minimal Unsatisfiable Subsets (MUSes) and Minimal Correction Sets (MCSes) as well as autarkies, which are independently satisfiable subsets of constraints. Two major outputs of this work are MUS/MCS enumeration algorithms, CAMUS and MARCO, both with full source code available.

These algorithms are tools for exploring unsatisfiable constraint systems with applications from planning and scheduling to microprocessor design verification. I have applied CAMUS to two digital logic verification tasks: an automated equivalence checker for Verilog with Zaher Andraus, and a logic error diagnosis tool with Sean Safarpour and others at the University of Toronto.

Seeing the value of cardinality constraints in CAMUS, my student Jordyn Maglalang and I developed a "cardinality solver" we call MiniCARD as an extension of MiniSAT. Source code for MiniCARD is available on GitHub.

See my publications for more, and feel free to contact me about any of this.

CS Education with LLMs§

Since 2023, I have been working on applications of large language models (LLMs) in education. The first result of this work was CodeHelp, an automated tutor for CS that provides the explanations and guidance that LLMs can generate while not providing the full solutions that plain chatbots are all too "eager" to share. CodeHelp, other LLM-based tools for education, and a framework for building web applications around these tools are all fully open source in the Gen-Ed framework on GitHub. With coauthors, I have published a few papers on CodeHelp; see my publications for more details.

Tools§

Every now and then I make a web application, script, or other program to scratch an itch. I collect these on the Tools page in case others might find them useful as well.