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
- [May 2020] Kavon and John receive a PLDI 2020 Distinguished Paper Award for From Folklore to Fact.
- [Mar 2020] Robert Rand will join the department in July!
- [Mar 2020] Justin selected for an NSF Graduate Research Fellowship!
- [Feb 2020] James Koppel presents Building Multi-Language Tools and elucidates counterfactual inference.
Talks
- [Kavon @ PLDI 2020 (June)] From Folklore to Fact: Comparing Implementations of Stacks and Continuations
- [Kartik @ QPL 2020 (June)] Quantum Hoare Type Theory (more)
- [Kartik @ POPL 2020 SRC] Hoare Types for Quantum Programming Languages (more)
- [Kartik @ PLanQC 2020] Verified Translation Between Low-Level Quantum Languages (more)
Core Faculty
Ravi Chugh Associate Professor |
Robert Rand Assistant Professor |
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, Chugh, and Rand'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)