Michael Coblenz

Assistant Professor, Computer Science & Engineering, University of California San Diego

prof_pic.jpg

mcoblenz (at) ucsd.edu

Office: CSE 3246

I created PLIERS (Coblenz et al., 2021) (Programming Language Iterative Evaluation and Refinement System), which is a method of integrating user-centered design into the process of designing programming languages. I use this approach to create concrete programming languages and then evaluate how the new languages affect people’s ability to write software. For example, I created Obsidian, a new smart contract language that uses a strong type system to rule out critical classes of bugs at compile time.

I completed my Ph.D. in the Computer Science Department at Carnegie Mellon University. I was a student of Jonathan Aldrich and Brad A. Myers. I also collaborated closely with Joshua Sunshine. Then, I was a Basili postdoctoral fellow at the University of Maryland. I worked with Michael Hicks, Michelle Mazurek, and Adam Porter.

Before that, I spent eight years as a full-time software engineer on the iWork team at Apple, focusing on Numbers. I worked on versions for macOS, iOS, and iCloud. If you’re still using some other spreadsheet app, give Numbers a try!

Active projects include:

  • The Kale project explores how we could make spreadsheets safer for all kinds of users, avoiding large classes of spreadsheet bugs. At the same time, it aims to empower data scientists to leverage the power and convenience of spreadsheets in their analysis work.
  • Web sites expose services via REST APIs. These APIs are designed according to various guidelines, but no one knows how the guidelines actually relate to API quality! I’m working to understand which guidelines are worth following and develop tools to help developers follow guidelines that result in better API quality.
  • Climate change is a major crisis of our time. I’m starting a new project to empower other kinds of scientists and engineers fight climate change by making it easier for them to write their programs. I’m also interested in how we might use tools from programming languages research to express, reason about, and enforce regulations that govern the environment.
  • Debugging is central to software engineering, but I don’t think we do a very good job of teaching how to debug. I’m interested in understanding how professional software engineers debug large programs and how we can teach students to work effectively on large codebases.
  • Rust is a promising programming language that provides strong safety benefits, but it can be hard to learn. I’m interested in making it easier to learn and use.
  • I’d like to develop theories that explain how people think when they are programming. Why do people (including myself!) write buggy code? How can we deepen our understanding of human cognitiion in a way that helps us create better ways of thinking about software?

For reference, I have posted my materials for my job search in 2022: CV, research statement, teaching statement, and diversity, equity, and inclusion statement.

news

Jul 1, 2022 I started a new position as an Assistant Professor at UC San Diego.

selected publications

  1. ICSE
    Garbage Collection Makes Rust Easier to Use: A Randomized Controlled Trial of the Bronze Garbage Collector
    Michael Coblenz, Michelle L. Mazurek, and Michael Hicks
    2022
  2. TOCHI
    PLIERS: A Process that Integrates User-Centered Methods into Programming Language Design
    Michael Coblenz, Gauri Kambhatla, Paulette Koronkevich, Jenna L. Wise, Celeste Barnaby, Joshua Sunshine, Jonathan Aldrich, and Brad A. Myers
    ACM Transactions on Computer-Human Interaction 2021
  3. OOPSLA
    Can Advanced Type Systems Be Usable? An Empirical Study of Ownership, Assets, and Typestate in Obsidian
    Michael Coblenz, Jonathan Aldrich, Brad A. Myers, and Joshua Sunshine
    2020
  4. TOPLAS
    Obsidian: Typestate and Assets for Safer Blockchain Programming
    Michael Coblenz, Reed Oei, Tyler Etzel, Paulette Koronkevich, Miles Baker, Yannick Bloem, Brad A. Myers, Joshua Sunshine, and Jonathan Aldrich
    ACM Transactions on Programming Languages 2020
  5. ICSE
    Glacier: Transitive Class Immutability for Java
    Michael Coblenz, Whitney Nelson, Jonathan Aldrich, Brad Myers, and Joshua Sunshine
    2017