Research
The overarching theme of my research is to develop
Direct Manipulation Programming Systems.
I want programming to be more interactive and tangible (like GUIs)
and GUIs to be more transparent and powerful (like programming).
active projects
| |
|
[CS 111: Creative Coding]
An introductory programming and creative coding course,
while studying and experimenting with editor features.
|
| |
|
[Deuce]
Text editors are great, but coding involves tedious,
error-prone edits that hinder productivity and creativity.
Deuce is a structure-aware code editor with direct manipulation
interactions for quickly performing programming and refactoring tasks.
|
older projects
|
|
[Sketch-n-Sketch]
GUIs are great, but the lack of
programmability
makes it difficult to develop
complex and reusable content. Sketch-n-Sketch is a
bimodal programming system
for interactively creating documents,
such as graphic designs and web pages.
|
|
|
[Hazel,
led by Cyrus Omar
@ Michigan]
Programming environments are great, but they typically provide little
help for incomplete programs.
This project develops
Semantic Foundations for Hole-Driven Development, allowing programming environments
to continuously edit, reason about, and run programs with holes.
|
|
|
[Ivy]
Visualization editors are great:
chart choosers as in Excel are easy to use,
shelf builders like Tableau faciliate rapid exploration, and
textual specification languages like Vega are expressive and flexible.
This project develops a framework
for integrating and augmenting the benefits of multiple user interface
modalities for visualization.
|
|
|
[Dependent JavaScript @ UCSD]
Scripting languages include features that frustrate
static reasoning, such as extensible objects, dynamically computed
keys, loosely coupled recursion, reflection, and dynamic code loading.
This project aims to develop type systems to
describe idiomatic programs in scripting languages
such as JavaScript, Python, and Ruby.
|
|
|
[Radar @ UCSD]
Defining a dataflow analysis for concurrent programs is complicated
by the subtleties of thread interleavings and locking protocols.
Radar automatically converts a sequential dataflow analysis to a
concurrent one by making use of datarace information from the
Relay race detector for C programs.
|
| |
|
[Staged Information Flow @ UCSD]
The prevalence of dynamically loaded code makes program analysis for
JavaScript difficult.
We present a staged approach to tracking information flow that splits the
analysis burden between compile-time and run-time.
|
|
|
[Fine @ Microsoft Research]
Modern SMT solvers allow refinement type systems to track security
and other complex properties, but they become a large part of the
compiler's trusted computing base (TCB). Fine incorporates a type-preserving
translation to eliminate the solver from the TCB.
Fine is a precursor to MSR's
F* language.
|