Adam T. Geller

I am a graduate student at the University of British Columbia. I study Computer Science with a focus on Programming Languages.

Brief Research Statement

For me, reasearch is a way to dig deeper into topics I find fun and interesting. I started doing Programming Languages research after finding myself really enjoying an introduction to PL class I took as an undergraduate at UW. Now I will have the opportunity to work closely with faculty and fellow students at UBC to learn and build new tools and ideas.

Cassius & VizAssert

I worked on Cassius during my undergraduate at UW.

Cassius is a tool for automated reasoning about webpage layout. It models the specification for much of CSS, and has novel ways of reasoning about many features of CSS, including floating layout, line-height, and margin-collapsing. My work on Cassius mainly involved improving or adding to our specification of CSS. Notable features I worked on include:

VizAssert is a tool that uses Cassius' understanding of webpage layout to allow developers to verify visual behavior of webpages. Developers can use VizAssert to make their own assertions, or use examples that we provide based off of accessibility and usability guidelines. My work on VizAssert included testing assertions and making a couple of new assertions based off of my work on line-height, as well as my work on Cassius. VizAssert had a paper accepted to PLDI 2018.


I have recently started working on PGo since beginning at UBC.

PGo is a source-to-source compiler from PlusCal to Go. The goal of PGo is to avoid errors arrising from incorrectly modeling a system by providiing a mechanical translation from a model-checkable specification to an implementation. PGo aims to provide a best-of-both-worlds experience: avoiding state-explosion commonly found in implementation model checkers by using a model checking language (PlusCal) that can be compiled into a correct (and useful) implementation.

I wrote an extended abstract and designed a poster which was accepted to the SPLASH 2018 poster session. The extended abstract can be found in the PGo github repository.