Portrait of Paul Biberstein
Paul Biberstein

I'm an undergraduate at Brown University interested in programming language and compiler design, computer graphics and CS education. In my free time, I like exploring applications of CS to music , including computer music compositions and computational musicology.
You can find more about me below, as well as some past projects and places I've worked.

Paul Biberstein's GithubPaul Biberstein's LinkedInPaul Biberstein's ResumePaul Biberstein's Twitter

Work Experience

Jump Trading

Software Engineer Intern

Chicago, IL
Summer 2022

Jump Trading

Wrote low-latency networking application and associated test harness for communication with financial exchanges.

Brown Visual Computing Lab


Providence, RI

Brown Visual Computing Lab

Working on novel method for few-shot 3D mesh synthesis via transformer networks

  • Exploring state-of-the-art methods for networks that learn implicit representations of 3D shapes
  • Developing networks that learn quantized representations of 3D shapes
Brown Programming Languages Team


Providence, RI
Summer 2021

Brown Programming Languages Team

Developed and tested a webapp and curriculum to help bring the Bootstrap: Data Science introductory data science curriculum to the middle and high school level.

Brown CS

Teaching Assistant

Providence, RI

Brown CS

Served as a teaching assistant and head teaching assistant in a variety of computer science classes over 6 semesters, including

  • accelerated introduction (cs19)
  • introduction to systems (cs300)
  • compilers (cs126)
  • programming languages (cs173)
  • advanced computer graphics (cs224)
MedRhythms, Inc.

Software Engineer Intern

Portland, ME
Summer 2020

MedRhythms, Inc.

Worked on agile team of 4 developing a music information retrieval tool for a digital therapeutics company that uses sensors, music & software to build evidence-based, neurologic interventions to measure & improve walking.


Volumetric RendererVolumetric Renderer

Volumetric Renderer

A volumetric renderer in Rust implementing state-of-the-art photon mapping algorithms

A global illumination renderer 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.

Relevant Topics: Rendering,Volumetric Photon Mapping,Beam Estimate,Rust

A functional scripting language with gradual typing

Skiff is a programming language and accompanying interpreter that attempts to provide a frictionless environment for scripting and being introduced to functional programming. Features include algebraic data types, pattern matching, type inference, first-class functions, and helpful error messages. The skiff interpreter compiles to WASM so you can use the web editor, but it is also available as a standalone binary on crates.io.

Relevant Topics: Interpreters,Functional programming,Algebraic data types,HM type inference,Rust


A computer music composition for guitar, glove, and algorithmic engine

Coexistence is a computer music composition consisting of a guitar, capacitive glove, and algorithmic synthesizer engine. Rather than use the guitar to directly create sound, the performer grounds the tips of their fingers against the strings to send instructions to an algorithmic engine running on a computer and direct its output. For example, the performer may pluck with one finger to set the tempo, or strum with a different finger to set a base chord.

The algorithmic engine is implemented in the programming language/performance environment Max/MSP and the glove is wired up to a MakeyMakey microcontroller to detect string-presses.

Relevant Topics: Max/MSP,Computer Music,Multimedia,Microcontrollers,Electronics
ML Chord GenML Chord Gen

Using machine-learning to aid musical composition and improvisation

ML Chord Gen is a webapp which utilizes a custom-trained neural network to provide the user with novel chord progressions. The chord progressions are generated subject to a number of tunable parameters, and the user can play them back in-browser with a variety of instruments to use as a backing track for improvisation or to inspire new compositions.

The chords are generated by a recurrent neural network that was trained on a large number of jazz standards. The network uses long short-term memory layers to ensure that the chords properly flow into each other. For more details, see the Github page linked above.

Relevant Topics: Python,Keras,Recurrent Neural Networks,JavaScript

A Python package for parsing and manipulating musical data

ChordalPy is a small Python package for parsing and manipulating musical chords. The package includes a chord class to represent a musical chord and a variety of methods on that class to assist with tasks such as transposition and spelling. Additionally, the package has a parsing component which enables converting text files of chords to data objects, provided they adhere to the popular standard established in Christopher Harte's 2010 thesis.

Relevant Topics: Python,Data Parsing,PyPi