I'm a fourth year Ph.D. student with the programming languages research group at Penn. My battle is against the ever-growing complexity of software. My weapons of choice are the theory and design of programming languages and tools that increase programmer productivity and software reliability in spite of that complexity.

Research

My research advisor is Steve Zdancewic. We have worked on variety of projects related to safe low-level languages and other practical language concerns. We are currently interested in exploring the intersection of programming languages and machine learning for the purposes of building powerful, approximately correct programming tools and systems.

Program Synthesis by Example

How do we choose an appropriate program that meets the user's specification from the obscenely large search space of possible programs? Unlike current approaches that use program verification techniques to refine the search space to a tractable size, we propose instead to use pre-existing code, e.g., example or open source code, to immediately refine the search to a relatively small number of programs. We hypothesize that many times, the code that you wish to synthesize has already been written by someone else. This approach takes advantage of that fact in order to provide reasonably quick program synthesis for everyday programming.

Ironclad C++

(With Milo Martin, Christian DeLozier, Santosh Nagarakatte, and Richard Eisenberg). Traditional inquiries into the safety of low languages have focused exclusively on C. Our work extends previous efforts for C temporal and spatial memory safety to C++. Unlike C, good C++ code is type-safe, affording us extra information during alias we can leverage to make pointer checks more efficient. Furthermore, C++ is a rich enough language that we can code up safe pointers as libraries rather than additional language primitives. We exploit these facts in identifying a type-safe subset of C++, Ironclad C++, that, when using our safe libraries, guarantees reasonably performant memory safety.

Language Interoperability

(With Vilhelm Sjöberg). Most software systems are not created with a single language but instead with a collection of languages each carefully chosen for the task at hand. We are investigating the sorts runtime checks and machinery involved in building interoperability layers between richly-typed, e.g., dependently-typed or linear types, and simply- or untyped languages.

Join Diesel (@UW)

With Craig Chambers, I investigated the integration of Join Calculus-style primitives in the spirit of Polyphonic C# and into Diesel. Our main challenge was ensuring that the semantics of join-style function calls played nicely with the classless objects, multimethods, and static type-checking guarantees of Diesel.

Teaching and Education

This summer, I will be the instructor for Penn's computer science offering in the Summer Academy in Applied Science and Technology (SAAST).

During the Fall 2011 semester, I was on leave from the PhD program in order to revamp both the content and organization of CIS 110, our introductory course on computer programming. Since then, I have been in charge of organizing and training the TAs for our introductory series --- CIS 110, 120, and 121.

Other courses I've been involved with here at Penn:

Useful Bits

Service

Personal

I'm a fervent supporter of the indie game scene and e-sports, in particular Starcraft 2. A few choice links:

Peter-Michael Osera's Facebook profile