Stephen Chang

McCormack Building, 3rd Floor, Office: 0201-03, Lab: 0139

Assistant Professor [cv | bio]
UMass Boston
Department of Computer Science
PLT Research Group

CS420 students (Spring 2024), click here.

CS622 students (Spring 2024), click here.

Research Interests | Research Group | Papers | Dissertation | Other Talks | Teaching

Research interests

Programming languages are the "ultimate abstraction" and yet, programmers can't deploy them as easily as other abstraction mechanisms, e.g., functions or objects, because of a lack of support from existing languages.

My research aims to close this gap by creating a general-purpose "language-oriented" language.

My recent work focuses on type systems. It enables easily creating new typed languages that are fully-featured, possibly domain-specific, yet flexible enough to be extended and improved just as easily. In particular, the languages are macro-extensible, so advanced typed system features like pattern matching, GADTs, and even type classes can be added as user-level libraries.

Previously, my dissertation explored lazy evaluation from both a theoretical and a practical perspective.

I also enjoy hacking with/on Racket.

Research Group




ProofViz: An Interactive Visual Proof Explorer (TFP 2021).
Daniel Melcer, Stephen Chang.
[  pdf  | ACM link  | Springer link  | abstract  | code  | talk  ]

Dependent Type Systems as Macros (POPL 2020).
Stephen Chang, Michael Ballantyne, Milo Turner, William J. Bowman.
[  pdf  | ACM link  | abstract  | code (Turnstile+)  | code (Cur)  | artifact  | slides  ]

Symbolic Types for Lenient Symbolic Execution (POPL 2018).
Stephen Chang, Alex Knauth, and Emina Torlak.
[  pdf  | abstract  | code repo  | artifact instructions, VirtualBox image (2.2GB)  ]

Super 8 Languages for Making Movies (Functional Pearl) (ICFP 2017).
Leif Andersen, Stephen Chang, and Matthias Felleisen.
[  pdf  ]

Type Systems as Macros (POPL 2017).
Stephen Chang, Alex Knauth, and Ben Greenman.
[  pdf  | abstract  | code repo  | artifact instructions, VirtualBox image (2.1GB)  ]

Profiling For Laziness (POPL 2014).
Stephen Chang and Matthias Felleisen.
[  pdf  | abstract  ]

Laziness By Need (ESOP 2013).
Stephen Chang.
[  pdf  | abstract  | slides  ]

The Call-by-need Lambda Calculus, Revisited (ESOP 2012).
Stephen Chang and Matthias Felleisen.
[  pdf  | abstract  | slides  | arXiv  ]

From Stack Traces to Lazy Rewriting Sequences (IFL 2011).
Stephen Chang, Eli Barzilay, John Clements, and Matthias Felleisen.
[  pdf  | abstract  | slides  | arXiv (previous version)  ]

Evaluating Call By Need on the Control Stack (TFP 2010) (best student paper).
Stephen Chang, David Van Horn, and Matthias Felleisen.
[  pdf  | abstract  | slides  | arXiv  ]


On the Relationship Between Laziness and Strictness. Northeastern University, May 2014.
[  pdf  ]

Other Talks

Improving Software Development via (Typed) Language Tailoring. Boston University POPV Seminar, June 2020.
[  slides  ]

Dependent Type Systems as Macros. UMass Boston, November 2019.
[  slides  ]

Building Typed Languages with Racket. Racket Summer School, August 2018.
[  lecture notes  | slides 1  | slides 2  ]

Type Systems as Macros. University of Washington, March 2017.
[  abstract  | video  ]

Type Systems as Macros. sixth RacketCon, September 2016.
[  abstract  | slides 1  | slides 2  | video  ]

A Boost-Inspired Graph Library for Racket. fourth RacketCon, September 2014.
[  abstract  | slides  | video  ]