# Cyrus Omar designs modern user interfaces for modern programming languages.

## Education

Carnegie Mellon University
PhD, Computer Science
UIUC
BS, Computer Science
BS, Molecular & Cellular Biology

## Teaching

Programming Languages (EECS 490)
W20, F20, W21, F21, W22, F22, W23, F23, W24
User Interfaces for Programming Languages (EECS 598-015)
F19

## Advising

#### PhD Students

- David Moon
- Andrew Blinn
- Matthew Keenan

#### Masters and Undergraduates

There are 35+ masters and undergraduate reseachers in FP Lab — see the FP Lab webpage!

#### Former Advisees

FP Lab alum include 1 Assistant Professor (Michael D. Adams), 6 PhD students, and 100+ students who went on to MS programs or industry!

## Service

2024
OOPSLA PC · VL/HCC PC · Onward! PC · LIVE PC · HATRA Publicity Chair · MWPLS SC Co-chair · CHI Reviewer · ICFP Reviewer · CSE DEI Committee
2023
MWPLS Co-chair · TyDe SC Chair · PLDI PC · ECOOP PC · ECOOP Area Chair (Brave New Ideas and Pearls) · VL/HCC PC · HATRA PC · IFL PC · SPLASH-E PC · SPLASH SRC · UIST Reviewer · TOPLAS Reviewer · Wiley Reviewer · PLMW @ ICFP Panelist · CSE DEI Committee · CSE Hosting Committee
2022
VL/HCC PC · TyDe SC Chair · HATRA PC · IFL PC · Rust Edu Co-founder and SC Member · SPLASH SRC · SPLASH PLMW Mentor · CSE DEI Committee · CSE Hosting Committee
2021
ICFP PC · UIST External Reviewer · HATRA PC · CSE DEI Committee · CSE Hosting Committee
2020
TyDe Co-Chair · MWPLS Co-Chair · ICFP ERC · ICFP SRC · HATRA PC · LIVE PC · CSE DEI Committee
2019
Onward! PC · ML Workshop PC · META PC · LIVE PC · ICFP AEC
2018
LIVE PC · SPLASH SRC PC · Journal of Visual Languages and Computing Referee
2017
GPCE Publicity Chair · GPCE PC · META PC
I lead the Future of Programming Lab (FP Lab), part of the vibrant MPLSE research community.
Recent Publications & Projects

## Hazel: Live Functional Programming with Typed Holes

Hazel is a new kind of live programming environment that can reason about and run incomplete programs, i.e. programs with holes of various forms. The following publications develop the semantic foundations for hole-driven development.

POPL 2019
Live Functional Programming with Typed Holes
Cyrus Omar, Ian Voysey, Ravi Chugh and Matthew A. Hammer
OOPSLA 2023
Live Pattern Matching with Typed Holes
Yongwei Yuan, Scott Guest, Eric Griffis, Hannah Potter, David Moon, and Cyrus Omar
Distinguished Paper Award
POPL 2024
Total Type Error Localization and Recovery with Holes
Eric Zhao, Raef Maroof, Anand Dukkipati, Andrew Blinn, Zhiyi Pan, and Cyrus Omar
Distinguished Paper Award

There has been a great deal of excitement around Hazel, e.g. at Strange Loop and on Twitter [1, 2, 3, 4, 5, 6, 7]!

## Tylr: Eliminating Parse Errors with Holes

Parse errors are a pain for beginners and experts alike. The Tylr project eliminates parse errors (!) by automatically tracking syntactic obligations and materializing them as holes and other affordances. This benefits both humans and downstream tooling.

POPL 2017
Hazelnut: A Bidirectionally Typed Structure Editor Calculus
Cyrus Omar, Ian Voysey, Michael Hilton, Jonathan Aldrich and Matthew A. Hammer
VL/HCC 2023
Gradual Structure Editing with Obligations
David Moon, Andrew Blinn, and Cyrus Omar

I was awarded the NSF CAREER Award for leading our ongoing work on Tylr and related systems!

## Livelits: Filling Typed Holes with Live GUIs

We are working on integrating graphical and programmatic modes of interaction by developing language mechanisms that allow you to define type-specific user interfaces that generate code underneath, i.e. they serve as interactive graphical literal notation.

We have (1) implemented this mechanism for Java as an Eclipse extension called Graphite, (2) surveyed nearly 500 developers to empirically validate the mechanism and to gather a wide variety of use cases, (3) performed a small pilot study, (4) added support for spliced expressions, (5) added support for live programming, (6) mechanically formalized these features, and (7) implemented this live literal mechanism into Hazel.

PLDI 2021
Filling Typed Holes with Live GUIs
Cyrus Omar, David Moon, Andrew Blinn, Ian Voysey, Nicholas Collins, and Ravi Chugh
ICSE 2012
Active Code Completion
Cyrus Omar, YoungSeok Yoon, Thomas D. LaToza and Brad A. Myers
There has been a great deal of excitement around livelits, e.g. on Twitter [1, 2]!

## Hazel Assistant: Integrative Foundations for Intelligent Programming Assistants

We are developing an intelligent programming assistant that synthesizes code satisfying specifications provided by human programmers in the form of types, tests, properties, and sketches, and guided by a learned understanding of idiomatic code (increasingly using large language models).

VL/HCC 2022
An Integrative Human-Centered Architecture for Interactive Programming Assistants
Andrew Blinn, David Moon, Eric Griffis, and Cyrus Omar
ICFP 2020
Program Sketching with Live Bidirectional Evaluation
Justin Lubin, Nicholas Collins, Cyrus Omar, and Ravi Chugh

## Hazel Tutor: Semantically Grounded Educational Technology

We are developing educational technology grounded in the semantic foundations of typed hole-driven development.

Onward! 2022
Contextualized Programming Language Documentation
Hannah Potter, Ardi Madadi, René Just, and Cyrus Omar
HATRA 2020
Hazel Tutor: Guiding Novices Through Type-Driven Development Strategies
Hannah Potter and Cyrus Omar

## RustViz: Interactively Visualizing Ownership and Borrowing

The Rust programming language achieves memory and thread safety using a static ownership and borrowing analysis. This has led to explosive adoption, but learning Rust remains challenging. We are developing RustViz, a system that makes learning Rust easier by visualizing the invisible static state changes that occur within Rust code.

VL/HCC 2022
RustViz: Interactively Visualizing Ownership and Borrowing
Marcelo Almeida, Grant Cole, Ke Du, Gongming Luo, Shulin Pan, Yu Pan, Kai Qiu, Vishnu Reddy, Haochen Zhang, Yingying Zhu, and Cyrus Omar

Read our RustViz-based quick introduction to Rust!

RustViz, which is developed by an all-undergraduate team, reached 2000+ stars on GitHub!
Previous Publications & Projects

## Relit: Reasonably Programmable Literal Notation

My thesis research developed mechanisms that allow library providers to express new type-specific literal notation (e.g. SQL literals) while ensuring that client programmers can still reason abstractly and compositionally about types and binding.

ICFP 2018
Reasonably Programmable Literal Notation
Cyrus Omar and Jonathan Aldrich
ECOOP 2014
Safely Composable Type-Specific Languages
Cyrus Omar, Darya Kurilova, Ligia Nistor, Benjamin Chung, Alex Potanin and Jonathan Aldrich
Distinguished Paper Award

Relit implements the mechanism from the ICFP 2018 paper into Reason, which is Facebook's new front-end for OCaml. The Wyvern programming language implements the mechanism from the ECOOP 2014 paper.

There has been a great deal of excitement around both Relit [1, 2, 3, 4, 5] and Wyvern [1, 2, 3, 4, 5]!

## typy: Programmable Semantic Fragments

typy allows library providers to install new statically typed semantic fragments into Python, while leaving its syntax alone (which cleverly sidesteps the "expression problem"). We have applied typy to problems in web security and data science.

GPCE 2016
Programmable Semantic Fragments: The Design and Implementation of typy
Cyrus Omar and Jonathan Aldrich
PSP 2014
Statically Typed String Sanitation Inside a Python
Nathan Fulton, Cyrus Omar and Jonathan Aldrich
Best Paper Award
The typy implementation is quiet as I focus on my other projects, but if you want to take the lead, contact me!

## SciUnit: Collaborative Infrastructure for Test-Driven Scientific Model Validation

One of the pillars of the scientific method is model validation: comparing a scientific model’s predictions against empirical data. The SciUnit project casts this as a form of collaborative software testing and develops useful infrastructure.

ICSE 2014
NIER Track
Collaborative Infrastructure for Test-Driven Validation of Scientific Models
Cyrus Omar, Richard C. Gerkin and Jonathan Aldrich
My collaborators Rick Gerkin and Sharon Crook continue to develop and apply SciUnit as part of the SciDash project.

## Capability Safe Programming Languages

We argue for concise formal architecture descriptions which are responsible for specifying constraints and passing a minimal set of capabilities to downstream system components, or explicitly entrusting them to individuals playing defined roles within a team.

IWACO 2014
Language-Based Architectural Control
Jonathan Aldrich, Cyrus Omar, Alex Potanin, and Du Li
We are now starting to think about applying these ideas to agentic AI safety.

## Neurobiological Circuit Dynamics

I entered grad school as a computational neurobiologist. I was interested in how biological circuits process information, so I developed a model of how the excitatory-inhibitory circuitry in the rodent whisker barrel cortex responds to stimulation.

J. Neurosci.
2012
Neural correlation is stimulus modulated by feedforward inhibitory circuitry
Jason W. Middleton, Cyrus Omar, Brent Doiron and Daniel J. Simons
I still find brains fascinating, but I think we will need more powerful computational tools to make the next leap in understanding, so now I study programming languages and programming environments!

## Information Theoretic Foundations for Brain-Computer Interfaces

We built a provably optimal EEG-based brain-computer interface by studying the information theoretic properties of noisy asymmetric channels and developing statistical models of user intent for various types of communication/control tasks.

IJHCI 2011
BCI Issue
A Feedback Information-Theoretic Approach to the Design of Brain-Computer Interfaces
Cyrus Omar, Abdullah Akce, Miles Johnson, Timothy Bretl, Rui Ma, Edward Maclin, Michael McCormick and Todd Coleman
I remain very interested in building tools that help people with limited mobility and other disabilities express their intent. I also remain very interested in tastefully incorporating statistical models of user intent into programming environments.