Created by Magical Gnomes!

Research

"If we knew what it is we were doing, it would not be called research. Would it?"

My research these days focuses primarily on pedagogical tools to help support large enrollment classes as well as our evolving Computer Science curriculum. I am particularly interested in the C programming language and systems written using the C language. Below is a list of major research endeavors that I have pursued or am currently pursuing...

PeerVal: Peer Evaluation System

Creator and Principal Architect, Fall 2017 to present

PeerVal is a peer ranking and evaluation system that creates a multiplier subsequently used to scale project grades. It helps increase accountability and fairness in student teams. As of Fall 2023, the system has been used by 4,317 total students among 11 offerings of CS 307: Software Engineering I, 12 offerings of CS 407: Software Engineering Senior Project, 3 offerings of CS 180: Problem Solving and Object-Oriented Programming, 3 offerings of CS 408: Software Testing, and 1 offering of CS 252: Systems Programming. Collaborators include Prof. Buster Dunsmore and Graduate Student Keehwan Park. Faculty users include Profs. Buster Dunsmore, Roopsha Samanta, Ben Delaware, Suresh Jagannathan, Xiangyu Zhang, and Gustavo Rodriguez-Rivera. More information can be found about PeerVal at this link.

C-Lab: Test Module Framework for C

Principal Architect and Maintainer, Fall 2018 to present

C-Lab is a rigorous test module framework for developing C programming assignments that is used heavily in CS 240: Programming in C. It includes its own malloc() library capable of detecting many memory errors as well as support for precisely tracking the amount of memory allocated (e.g., to ensure students do not over or under-allocate memory for structures like a linked-list node). The framework also includes support for generating and manipulating files of arbitrary text format, generating strings, integers, floats, and other datum. It has structural support for an arbitrary number of discrete test cases, point tracking, and an automated grading harness that allows us to grade hundreds of students in a couple of minutes. As of Fall 2023, it has been used by 1,604 students in 6 offerings of CS 240. Collaborators include the original creator, Dr. Richard Kennell, and former Graduate Students Brian Hays, Jordan Field, Yubo Shao, and Chris Potter.

Eastwood: Code Style Linter for C

Creator, Fall 2019 to present

Eastwood is a novel code linter that assesses and provides feedback to students with regard to adherence to the course code standard used in our C programming course, CS 240 as well as CS 252: Systems Programming. As of Fall 2023, it has been used by 1,352 students in 4 offerings of CS 240 and 1 offering of CS 252. The latest version has been rewritten in LLVM by Graduate Student Rowan Hart. Prior collaborators include Connor McMillin, Brian Hays, and Elkindi Rezig. The source code for Eastwood is available here. Our paper, published in the SIGCSE 2023 technical symposium, can be found here.

EnCourse: Real-Time Class Project Analytics and Tracking

Coauthor and Developer, Fall 2018 to present

EnCourse is a submission, revision, and analytics tracking system for large enrollment courses that has been used by over 4,133 students among 6 offerings of CS 240: Programming in C and 10 offerings of CS 252: Systems Programming. Collaborators include Prof. Gustavo Rodriguez-Rivera and former students Jordan Buckmaster, Killian LeClainche, Shawn Montgomery, William Reed, Ryan Sullivan, and Jarrett Lee. More information about the system can be found here. You may also download a copy of the paper that was accepted and published in the SIGCSE 2022 technical symposium from this link.

Metachory: An Unprivileged OS Kernel for General Purpose Distributed Computing

Co-creator and Developer

Metachory is the first virtual, distributed operating systems kernel. It virtualizes only the exceptional aspects of native program execution such as system calls, page faults, signals, and file system interactions. Combined with a distributed coherence mechanism, it provides an approach to creating a general purpose distributed system that is not only simple to install, configure, and maintain but, more importantly, easy to use. The approach provides a foundation for supporting execution of unmodified native applications—at nearly-native speed—by ordinary end-users without administrative or special privileges (e.g., "root") as well as transparent process migration and checkpointing. More information, including my dissertation on the system can be found at metachory.org.