CMSC 499A: Operating Systems as Abstract Machines

Fall 2026. Current UMD undergraduates may participate through CMSC499A: Research with Professorial Faculty. Interested students should email dvanhorn@cs.umd.edu before the start of the semester.

This research project will explore a new approach to teaching and building operating systems using the Lean programming language and theorem prover. Rather than beginning from low-level hardware mechanisms alone, we will investigate operating systems as implementations of higher-level abstract machines that provide programmers with processes, virtual memory, files, communication channels, and other protected abstractions.

The project will focus on designing and implementing a small executable operating-system model in Lean. We will begin by defining the semantics of an abstract user machine that exposes programmer-visible concepts such as processes, message passing, scheduling, and shell interaction. We will then explore how these abstractions can be realized atop progressively lower-level machine models involving memory, privilege modes, traps, and virtual memory.

The emphasis of the study will be on:

Students participating in the study may help design:

The project is intended to be highly exploratory and implementation-oriented. While Lean will be used throughout, the focus is not on large-scale formal proof engineering. Instead, we will emphasize executable models, semantic clarity, testing, and lightweight reasoning about system invariants.

Students with interests in programming languages, operating systems, formal methods, compilers, runtime systems, or semantics are especially encouraged to participate.