Stephen Chang

McCormack Building, 3rd Floor, 0201-03

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

I am teaching CS 420 this semester (Fall 2020).

Research Interests | 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.


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  ]