Cyrus Omar designs intelligent user interfaces for modern programming languages.

Education

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

Advising

PhD Students

Research Staff

Masters and Undergraduates

There are 10+ masters and undergraduate researchers in FP Lab — see the FP Lab webpage!

Former Advisees

FP Lab alum also include 200+ undergraduate and MS students, 15 of whom went on to PhD programs!

Service

2026
PLDI PC · PROPL Chair · VL/HCC PC · HATRA PC · LMPL PC · PLMW @ SPLASH Speaker · SPLASH SRC Judge · CSE Course Review Committee
2024
OOPSLA PC · VL/HCC PC · Onward! PC · LIVE PC · SPLASH-E PC · HATRA Publicity Chair · CSE DEI Committee
2023
PLDI PC · ECOOP PC · VL/HCC PC · MWPLS Co-chair · TyDe SC Chair · ECOOP Area Chair (Brave New Ideas and Pearls) · HATRA PC · IFL PC · SPLASH-E PC · SPLASH SRC · PLMW @ ICFP Panelist · CSE DEI Committee · CSE Hosting Committee

For older service roles, refer to my CV.

Awards and Honors

I lead the Future of Programming Lab (FP Lab), part of the vibrant MPLSE research community.
I am on sabbatical at the University of Cambridge for 2026–27, as a Visiting Fellow in the Energy and Environment Group in the Department of Computer Science and Technology and an Associate Scholar at Pembroke College.

Lively typed tables in Hazel / Oct 2026

Most data analysis happens in dynamic languages like Python, R, MATLAB, and Julia using computational notebook interfaces like Jupyter and R Studio.

These are flexible systems, but dynamic checking leaves critical information about table schemas, i.e. a table's column names and corresponding types, completely latent in the operations that are performed.

Knowing the schema of a table generated during a calculation is useful for several reasons. It allows your editor (even when used by an AI) to provide more accurate autocomplete and error localization, often before you waste your time running an expensive but incorrect computation.

Making schemas explicit, e.g. at function and module boundaries, is also critical to interoperability and reuse, key concerns as scientific work scales up to planetary scale (see our FAIR case for a live computational commons).

Shifting to a statically typed approach could help matters, with table schemas tracked as types. However, there is a major problem with statically typed systems for working with tables: they struggle with data-dependent operations where the schema of a function's output depends on the values in its input.

For example, unstacking a long table into a wide one like in the example below produces a table whose column names and types depend on the values (here, in the "element" column) of the input! No ordinary static type checker can encode the type of this kind of operation precisely.

Read full note... (617 words)

# 31st Oct 2026•hazel, oopsla
Loading recent items...