Stephen Chang
McCormack Building, 3rd Floor, Office: 0201-03, Lab: 0139
Assistant Professor [cv | bio] CS450 students (Fall 2024), click here. |
|
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.
Chantelle Boateng (Sloan IDS Fellow)
Leif Andersen (post-doc)
Kyle Clapper (PhD) (Jabra)
Mitch Gamburg (NEU ugrad) (Meta)
Daniel Melcer (NEU ugrad) (NEU PhD)
Milo Turner (NEU ugrad) (Starry Internet)
Alex Knauth (NEU ugrad) (Mutual Knowledge Systems)
Vishesh Yadav (NEU masters) (Apple)
Type Tailoring
(ECOOP 2024).
Ashton Wiersdorf, Stephen Chang, Matthias Felleisen, Ben Greenman.
[
pdf
| DROPS link
| blog
| code
]
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
]
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
]
CS420 (Spring 2024, UMB): Introduction to the Theory of Computation
CS450 (Fall 2023, UMB): High-Level Languages
CS420 (Spring 2023, UMB): Introduction to the Theory of Computation
CS420 (Fall 2022, UMB): Introduction to the Theory of Computation
CS420 (Spring 2022, UMB): Introduction to the Theory of Computation
CS622 (Fall 2021, UMB): Theory of Formal Languages
CS420 (Spring 2021, UMB): Introduction to the Theory of Computation
CS420 (Fall 2020, UMB): Introduction to the Theory of Computation
CS4620 (Spring 2018, NEU): Building Extensible Systems ("Hack Your Own Language")
CS5010 (Spring 2015, NEU): Program Design Paradigms
CS5010 (Fall 2014, NEU): Program Design Paradigms
CS5010 (Spring 2010, NEU): Program Design Paradigms
CS5010 (Fall 2009, NEU): Program Design Paradigms
CS2510 (Spring 2009, NEU): Fundamentals of Computer Science 2
CS2500 (Fall 2008, NEU): Fundamentals of Computer Science 1
CS51 (Spring 2008, Harvard): Abstraction and Design in Computation