I’m Josh M. Pollock, a first year PhD student in MIT EECS’s Software Design Group. I’m advised by Daniel Jackson.

I combine techniques from human-computer interaction and programming languages to build tools that change how people think about the world, learn new ideas, and solve problems.

I graduated with a BS in Computer Science from the University of Washington where I worked in the PLSE group under Zachary Tatlock and the grad students Jared Roesch and Eunice Jun.






Program Semantics Visualizations (PSVs) are dynamic visualizations of program execution that help programmers understand language semantics. The Sidewinder research program develops design criteria for PSV tools, provides a formal theory for their construction, and reifies that theory in a PSV prototyping framework.


(2019) Theia: Automatically Generating Correct
Program State Visualizations

Theia is a generic framework for program state visualization that uses abstract machine definitions to generate complete visualizations.

The paper discusses the relationship between abstract machines and notional machines and identifies completeness, continuity, and consistency as crucial properties for dynamic program visualizations.

Apache TVM – Relay

Relay is an intermediate representation (IR) for the machine learning compiler stack TVM. TVM powers machine learning inference tasks at Amazon and underpins OctoML Inc.


(2018) Relay: A New IR for Machine Learning Frameworks

This paper discusses early work on Relay and the potential benefits of a functional IR over graph IRs underlying PyTorch and TensorFlow.

(2019) Relay: A High-Level Compiler for Deep Learning

Machine learning framework IRs must be expressive, composable, and portable. Relay’s design addresses these design criteria without compromising performance.

The TVM Stack