Portrait of Paul Biberstein

Paul Biberstein

PhD student at the University of Pennsylvania studying programming languages and systems

Present

I'm currently a PhD student at the University of Pennsylvania where I'm working with Mayur Naik and Joe Devietti researching differentiable Datalog and GPU programming, with applications to neurosymbolic programming using the Scallop programming language.

Updates

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

Posts

    None yet

    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

    Personal

    In my free time, I enjoy running long distances, baking, skiing, and spending time on the ocean—all things you can do in my wonderful home state of Maine.