Our group is interested in all aspects of programming language design and implementation, ranging from theoretical foundations to practical applications. Take a look at our projects and publications below to find out what we're currently up to.

We are actively recruiting highly motivated graduate students, as well as UChicago undergrads, who share and complement our research interests. If you are interested in our work and would like to talk about opportunities to join our group, please get in touch!


>>> Old News


>>> More Talks

Core Faculty

Ravi Chugh
Assistant Professor
John Reppy

Affiliated Faculty

Stuart Kurtz
Shan Lu
Associate Professor
Dave MacQueen
Professor Emeritus
Adam Shaw
Senior Lecturer

Students and Postdocs

Mikaël Mayer
Cyrus Omar
Nick Collins
(Ph.D. Student)
Kavon Farvardin
(Ph.D. Student)
Brian Hempel
(Ph.D. Student)
Kartik Singhal
(Ph.D. Student)
Joe Wingerter
(Ph.D. Student)
Justin Lubin



Charisee Chiw


Charisee Chiw (PhD 2017) Implementing Mathematical Expressiveness in Diderot
Lamont Samuels (PhD 2016) Declarative Computer Graphics using FRP
Sneha Popley (MS 2014) Modules and the Global Environment in Type Classes
Lars Bergstrom (PhD 2013) Parallel Functional Programming with Mutable State
Sven Auhagen (MS 2012) Chunking of Work for Dynamic Scheduling Decisions
Adam Shaw (PhD 2011) Implementation Techniques for Nested-Data-Parallel Languages
Mike Rainey (PhD 2010) Effective Scheduling Techniques for High-Level Parallel PLs
George Kuan (PhD 2010) A True Higher-Order Module System
Jon Riehl (PhD 2008) Relative Techniques in Extensible Languages
Yingqi Xiao (PhD)
Chunyan Song (PhD)


Bowen Wang (BS/MS 2018) Predicting Haskell Type Signatures from Names
Charles Chamberlain (BS 2018)
Grace Lu (BS 2017) Deuce: Direct Manipulation Source Program Editor
Izaak Meckler (BS 2015) Mote: Goal-Driven Development and Synthesis for Haskell
Aaron Turon (BS 2007) Metaprogramming with Traits
Aquinas Hobor (BS 2003)
Sam Tobin-Hochstadt (BS 2003)
Lukasz Ziarek (BS 2003) Adding Existential Types to SML/NJ


Active Projects

Deuce A User Interface for Lightweight Structured Editing
Diderot A Parallel DSL for Image Analysis and Visualization
EPiQC * Enabling Practical-Scale Quantum Computing
Hazel ** Live Functional Programming with Typed Holes
Manticore A High-Level Parallel Programming Language
Nessie A NESL to CUDA Compiler
Sketch-n-Sketch Direct Manipulation Programming

** with MIT, Princeton, Georgia Tech, and UC Santa Barbara
** with CU Boulder and Carnegie Mellon University

Older Projects

Concurrent ML First-Class Synchronous Operations in SML
Dependent JavaScript Static Types for Dynamic Languages
Moby Higher-Order Concurrency and Classes
Standard ML and SML/NJ Higher-Order, Typed, Functional Programming


Please see Reppy's and Chugh's publication pages.


Current Quarter (Autumn 2018)

[fa18] CMSC 32001: Topics in PL: Automated Metatheory (Reppy)

Upcoming Quarters

The following schedule is subject to change.

[sp19] CMSC 32001: Topics in PL (Chugh)

[sp19] CMSC 22300: Functional Programming (Chugh)

[sp19] CMSC 22100: Programming Languages (Shaw)

Previous Quarters