Michael Coblenz
Assistant Professor, Computer Science & Engineering, University of California San Diego
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
-
ICSEGarbage Collection Makes Rust Easier to Use: A Randomized Controlled Trial of the Bronze Garbage Collector2022
-
TOCHIPLIERS: A Process that Integrates User-Centered Methods into Programming Language DesignACM Transactions on Computer-Human Interaction 2021
-
OOPSLACan Advanced Type Systems Be Usable? An Empirical Study of Ownership, Assets, and Typestate in Obsidian2020
-
TOPLASObsidian: Typestate and Assets for Safer Blockchain ProgrammingACM Transactions on Programming Languages 2020
-
ICSE