I'm an Associate Professor in the Rutgers Department of Linguistics, where I also serve as the Graduate Program Director.
I'm a formal and computational semanticist using computer science, type theory, and lambda calculus to develop scalable, compositional, and implemented models of how language is generated, parsed, and understood.
Programming languages are unlike natural language in many ways, but they are, after all, languages—with form, meaning, and a systematic relationship between the two. The connection between linguistic semantics and functional programming is especially close: in both domains, complex concepts or procedures are built compositionally, by iteratively applying functions to arguments. My research uses techniques developed for modularly extending pure functional languages with side effects (e.g., monads and applicative functors) as engines for better and more explanatory models of meaning composition in natural language.
As long as I've been a linguist, I've been fascinated by quantification, scope, indefiniteness, anaphora, and ellipsis, interacting domains in which the relationship between form and meaning is especially rich, and revealing. I've developed new frameworks for doing semantics in the presence of dynamic effects (state) and alternatives (nondeterminism). I have longstanding interests and projects in Combinatory Categorial Grammar, (semantic) parsing, and continuations. And I am a fan of implementing semantic theories as runnable, debuggable code.
At Rutgers I teach courses at the undergraduate and graduate levels in formal semantics, computational linguistics, and general linguistics.
You can find further details of my academic life, including papers, talks, course materials, and PhD students, in my CV. My github is here.
Email me at