Attention: Pomona College is planning for a full return of students in fall. Learn More

Michael Greenberg

Assistant Professor of Computer Science
  • Expertise

    Expertise

    I study programming languages. My research has focused on strengthening the guarantees on offer at the "easy and automatic" end of the spectrum.   

    My primary focus is on improving the the POSIX shell and building tools to support its use.

    I also work in two other areas: contracts, a flexible form of runtime verification for higher-order programming languages; and software-defined networking, a recent development that allows for straightforward centralized control of computer networks.

    Research Interests

    • Static and dynamic verification of programs
    • Network policy languages
    • Network policy analysis
    • Topic modeling/digital humanities

    Areas of Expertise

    • Programming language semantics
    • Type theory
    • Higher-order runtime verification (contracts and gradual types)
    • Language design
    • Theorem proving
    • Lenses and bidirectional programming
    • Interactive programming and the shell
    • Computer networks
  • Work

    Work

    Michael Greenberg and Austin J. Blatt. 2019. "Executable formal semantics for the POSIX shell". Proc. ACM Program. Lang. 4, POPL, Article 43 (December 2019).

    Taro Sekiyama, Atsushi Igarashi, Michael Greenberg. “Polymorphic Manifest Contracts, Revised and Resolved.” ACM Trans. Program. Lang. Syst. 39(1): 3:1-3:36 (2017).

    Mina Tahmasbi Arashloo, Yaron Koral, Michael Greenberg, Jennifer Rexford, and David Walker. 2016. SNAP: Stateful Network-Wide Abstractions for Packet Processing. In Proceedings of the 2016 ACM SIGCOMM Conference (SIGCOMM ’16). Association for Computing Machinery, New York, NY, USA, 29–43.

    Ryan Beckett, Michael Greenberg, and David Walker. 2016. Temporal NetKAT. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’16). Association for Computing Machinery, New York, NY, USA, 386–401.

    Michael Greenberg. 2015. Space-Efficient Manifest Contracts. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). Association for Computing Machinery, New York, NY, USA, 181–194.

    Benjamin C. Pierce, Chris Casinghino, Marco Gaboardi, Michael Greenberg, Cătălin Hriţcu, Vilhelm Sjöberg, and Brent Yorgey. Software Foundations course textbook.

    Michael Greenberg, Benjamin C. Pierce, and Stephanie Weirich. 2010. Contracts made manifest. In Proceedings of the 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’10). Association for Computing Machinery, New York, NY, USA, 353–364.

  • Education

    Education

    BA in Computer Science and Egyptology, Brown University

    MA and PhD in Computer and Information Science, University of Pennsylvania

  • Awards & Honors

    Awards & Honors

    Most Influential Paper (awarded OOPSLA 2019) and Best Student Paper (awarded OOPSLA 2009):

    Leo A. Meyerovich, Arjun Guha, Jacob Baskin, Gregory H. Cooper, Michael Greenberg, Aleks Bromfield, and Shriram Krishnamurthi. 2009. Flapjax: a programming language for Ajax applications. In Proceedings of the 24th ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA ’09). Association for Computing Machinery, New York, NY, USA, 1–20.