Matthew A. Hammer

Notice: As of Jan 2019, I am a researcher and engineer at Dfinity.
The rest of this page consists of a stale, outdated academic homepage from my days as a tenure-track professor at CU Boulder.

email:
papers: Google Scholar | DBLP

I am a co-director of the CU Programming Languages and Verification group (CUPLV).

As of Fall 2015, I am an assistant professor in the Department of Computer Science at University of Colorado Boulder.

I am a co-director of the CU Programming Languages and Verification group (CUPLV).

Research Interests

(Also see my drafts and publications page).

Research on programming languages provides invaluable lenses that connect human understanding with computational phenomena.

In particular, I'm interested in designing PL-based abstractions for settings in which humans and computers cooperate to create and process information.

The Adapton project
Foundational semantics for incremental computations

Fungi: Typed incremental computation with names.
Latest draft: Aug 2018.
Work-in-progress implementation: github.com/Adapton/fungi-lang.rust
Incremental Computation with Names (OOPSLA 2015)
Adapton: Composable demand-driven incremental computation (PLDI 2014)

Incremental computations
attempt to exploit input similarities over time, reusing work that is unaffected by input changes.

Adapton offers a unified model for eager and lazy incremental computation, including a general-purpose demand-driven change propagation algorithm.

To maximize this reuse in a general-purpose programming setting, programmers need a mechanism to identify dynamic allocations (of data and subcomputations) that correspond over time. Nominal Adapton (OOPSLA 2015) offers a notion of names which is formal and general. The Fungi language offers an associated type and effects system for programs that deterministically generate and use unique names.

The Hazelgrove project
Foundational semantics for interactive programming

Live Functional Programming with Typed Holes (POPL 2019)
Toward Semantic Foundations of Program Editors (SNAPL 2017)
Hazelnut: A Bidirectionally Typed Structure Editor Calculus (POPL 2017)
HZ: prototype and live demo (POPL 2017 Artifact)

Languages of Play paper (FDG 2017)

Interactive computations
reside in an open world, where future states are explored collaboratively with an external user. Common examples include spreadsheets, development environments, video games and media processing (graphics and sound).

Past projects

Secure multi-party computation
consists of computation performed by mutually-distrusting agents; together, they cooperatively compute functions over their private data, while only ever learning certain prearranged results and while remaining otherwise oblivious to the computational steps necessary to produce them.

See also: Our Wysteria paper (OAKLAND 2014)
Our Knowledge Inference paper (PLAS 2013)
Secure multi-party computation (wikipedia)


Publications List

Students

Kyle Headley (PhD student, since Fall 2015)
Monal Narasimhamurthy (PhD student, since Fall 2016)
Jared Wright ‡ (PhD student, since Fall 2016)
William Temple(PhD student, since Fall 2017)
David Moon (PhD student, since Fall 2018)
†: Co-advised with Ben Shapiro, from the Laboratory for Playful Computation (LPC)
‡: Co-advised with Bor-Yuh Evan Chang from CUPLV

Former students

Byron Becker(Undergraduate thesis, May 2018)

Teaching

Semester Number Title
2018 Spring CSCI 4830-16 Principles of Functional Programming
2017 Fall CSCI 3155 Principles of Programming Languages
2017 Spring CSCI 7000 Advanced programming language techniques for incremental computation
2016 Fall CSCI 5535 / ECEN 5533 Fundamentals of Programming Languages
2016 Spring CSCI 7000 Programming Language Design for Interaction
2015 Fall CSCI 5535 / ECEN 5533 Fundamentals of Programming Languages

Funded Projects

Online Verification-Validation (PI)
Semantic Foundations for Hole-Driven Development (PI)

Funding Acknowledgments

My research has been funded through various sources, both past and present:
Facebook Faculty Research Award (2017)
Online Verification-Validation (NSF project, Sept 2016--2019)
Mozilla Research Grant (2015)

Short biography

Before joining CU, I was a postdoc researcher working with Michael Hicks, Jeff Foster, David Van Horn and the PLUM group at the University of Maryland. As a PhD student, I was advised by Umut Acar at the University of Chicago as well as a visiting student at the Max Planck Institute for Software Systems in Kaiserslautern, Germany.

As a student intern, I spent summers at IBM Research in Almaden and Intel Research in Santa Clara. I received my B.S. in 2005 from the University of Wisconsin with a major and honors in computer science.