Assistant Professor, Computer Science & Engineering, University of California San Diego
mcoblenz (at) ucsd.edu
Office: CSE 3246
I am recruiting PhD students this application cycle. Applications are due December 21, 2022. I’m looking for prospective students who want to change the world by making it easier for many kinds of programmers and software engineers to create high-quality software at lower cost. I’m also interested in applying the principles of human-computer interaction, software engineering, and programming languages to help address the climate crisis. Can we build tools to make climate scientists’ jobs easier? Can we create formal tools to help policymakers to develop and enforce policies that make the world a better place?
As of Fall 2022, I have several projects I’d love to work with students on listed below. I also invite students to propose their own ideas! If you are interested in working on a PhD with me, your application should mention my name, what kind of work you’d like to do, and why that work excites you.
- 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?
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!
For reference, I have posted my materials for my job search in 2022: CV, research statement, teaching statement, and diversity, equity, and inclusion statement.
|Jul 1, 2022||I started a new position as an Assistant Professor at UC San Diego.|
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
ICSEGlacier: Transitive Class Immutability for Java2017