Teaching

Twelve Test Generators for Twelve Programming Languages (CISPA, 2026)

I designed this seminar and co-taught it at CISPA in 2026. Each student picked a programming language and built a program generator whose output that language’s compiler or interpreter accepts. Students wrote grammars and semantic constraints in Fandango-RS, a Rust-based evolutionary generator for language-based testing.

Weekly meetings had two parts. In the retrospective, students compared what had gone wrong in their language that week, such as odd scoping rules, and the group looked for quirks shared across languages that a generic constraint could capture. In the prospective, we introduced a new topic (composing constraints, generation goals, def-use relations and scoping, evolutionary search) along with a constraint design pattern for it, which students then implemented for their own language.

This year’s languages were C++, C#, Dart, Java, Julia, Kotlin, Lua, OCaml, Pascal, Rust, Squirrel, and Swift. The seminar ended with a day of student talks and a written report from each student, and the case studies are going into a joint paper with the students as co-authors.

Other teaching

See also the students I advise.