This homepage is out of date: As of Fall 2015, I am an assistant professor at The University of Colorado Boulder.

My new homepage

Matthew A. Hammer

email: hammer@cs.umd.edu
papers: Google Scholar | DBLP1 | DBLP2
twitter:@matthewhammer
rust-lang:matthewhammer
post: Dept. of Computer Science
University of Maryland
A.V. Williams Building
College Park, MD 20742

I am a postdoc researcher studying topics in programming languages. I work with Michael Hicks, Jeff Foster, David Van Horn and the PLUM group at the University of Maryland.

In Fall 2015, I will start a new job as an assistant professor in the Department of Computer Science at University of Colorado Boulder. Specifically, I'll join the CU Programming Languages and Verification group (CUPLV).

Current Research

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.

Incremental computations
consume and produce information whose content or structure changes slowly over time by small changes. In these settings, programs exploit cached work from the past to respond more efficiently than naive re-computation that is oblivious to past work.

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

Many prior programming-language-based approaches to incremental computation, including self-adjusting computation, assume a non-interactive model. As it turns out, efficient interactive computation often requires a demand-driven approach to caching past computation.

See also: Our Incremental Computation with Names paper (arXiv 2015)
Our Adapton paper (PLDI 2014)
Incremental computation (wikipedia)
Interactive computation (wikipedia)

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)

Short biography

I have been a postdoc happily working in the PLUM group since fall 2012. Formerly, I was a Ph.D. student of Umut Acar at the University of Chicago, as well as a visiting student at the Max Planck Institute for Software Systems in Kaiserslautern, Germany, where I lived for several years.

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

Recent drafts

Publications

( See also: DBLP1, DBLP2, Google Scholar )