Portrait of Paul Biberstein

Paul Biberstein

Ph.D student at the University of Pennsylvania studying programming languages and systems

Past

I received my Bachelors from Brown, where I researched programming systems for data science under Shriram Krishnamurthi and neural scene representations with Daniel Ritchie.
I also served as an undergraduate TA in a number of courses including intro CS, intro systems, programming languages, compilers, and computer graphics.


While an undergraduate, I interned at

  • MedRhythms, a digital therapeutics startup using audio processing to help stroke-survivors
  • Jump Trading, an international quantitative trading firm based in Chicago

Present

I'm currently a Ph.D student at the University of Pennsylvania where I'm working with Mayur Naik and Joe Devietti on the intersection of programming languages and GPGPU programming.

Projects

Volumetric Renderer using Photon Mapping

A global illumination renderer written in Rust that uses volumetric photon mapping to render physically accurate participating media such as fog and mist. A variety of volumetric photon mapping algorithms are implemented, from the original algorithm published in 1998 up to recent work using lower-dimensional blurs.

See it on Github

Skiff

A functional scripting language written in Rust and with interpreter available as a native binary or a WebAssembly-based online editor. Features include much of the standard fare including type inference, algebraic data types, pattern matching with exhaustiveness checking, and legible error messages.

You can see the code on Github, the package on crates.io, or the online editor.

Multi-Armed Bandits for Adaptive Large Neighborhood Search

This project (which was also my undergraduate capstone work) involved improving the performance of a specific local-search algorithm known as Adaptive Large Neighborhood Search (ALNS) by applying existing algorithms for solving the Multi-Armed Bandit problem.

See the code on Github or the abstract.

Coexistence

Coexistence is a computer-music composition for guitar, glove, and algorithmic engine. Implemented using the Max/MSP programming and performance environment. The piece explores the relationship between the performer and the computer by re-imagining the guitar not as an acoustic instrument, but as an instrument for sending instructions to an algorithmic music engine running on a computer.

See a recording of the piece

ML Chord Gen

ML Chord Gen is a webapp for generating chord progressions using a recurrent neural network. The model was trained on a dataset of 1000+ chord progressions from popular music. While the architecture is quite dated by now, it still produces reasonable output.

See the webapp online