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!


News

>>> Old News


Talks

>>> More Talks


Core Faculty

Ravi Chugh
Assistant Professor
 
Robert Rand
Assistant Professor
(July 2020)
John Reppy
Professor
 


Affiliated Faculty

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


Students and Postdocs

Mikaël Mayer
(Postdoc)
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
(Undergraduate)

Alumni

Postdocs

Charisee Chiw
(2017–18)
Cyrus Omar
(2017–19)

Ph.D. Students

 
Charisee Chiw (PhD 2017) Implementing Mathematical Expressiveness in Diderot
Lamont Samuels (PhD 2016) Declarative Computer Graphics using FRP
Lars Bergstrom (PhD 2013) Parallel Functional Programming with Mutable State
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)

Undergraduate and Masters Students

 
Arthur Vale (BS/MS 2019) Abstracting Syntax for Meta-Theoretic Proof-Carrying PLs
Charles Chamberlain (BS 2019)
Bowen Wang (BS/MS 2018) Predicting Haskell Type Signatures from Names
Grace Lu (BS 2017) Deuce: Direct Manipulation Source Program Editor
Izaak Meckler (BS 2015) Mote: Goal-Driven Development and Synthesis for Haskell
Sneha Popley (MS 2014) Modules and the Global Environment in Type Classes
Sven Auhagen (MS 2012) Chunking of Work for Dynamic Scheduling Decisions
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

Projects

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 Bidirectional Programming with Direct Manipulation

** with MIT, Princeton, Georgia Tech, and UC Santa Barbara
** with Michigan, 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

Publications

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


Courses

Current Quarter (Winter 2020)

Upcoming Quarters

The following schedule is subject to change.


[sp20] CMSC 22100: Programming Languages (Shaw)

[sp20] CMSC 22300: Functional Programming (Chugh)

[sp20] CMSC 22500: Type Theory (Kurtz)

[sp20] CMSC 32001: Topics in PL: User Interfaces for Programming Languages (Chugh)

Previous Quarters