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 logo

Software Engineering Intern

Chicago, IL
Summer 2022

Jump Trading

Brown Visual Computing Lab logo

Undergraduate Researcher (Graphics and Deep Learning)

Providence, RI
Spring 2022

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 University logo

Teaching Assistant

Providence, RI
Fall 2020—Fall 2022

Brown University

Develop course material and hold office hours for a variety of classes
  • Head TA for cs173 (Programming Languages): lead course staff to assist with assignments ranging from type inference algorithms to lazy interpreters.
  • TA for cs300 (Intro Systems): hold office hours, labs, and workshops to help students learn foundational systems skills. Developed new lab to introduce students to Rust.
  • TA for cs126 (Compilers): hold office hours and labs to help students develop a compiler from lisp to x86 written in OCaml.
  • TA for cs19 (Accelerate Intro): hold office hours and labs to help students learn foundational algorithms and data structures via functional programming.
Brown University Programming Languages Team logo

Undergraduate Researcher (Programming Languages and Data Science)

Providence, RI
Summer 2021

Brown University Programming Languages Team

Develop and tested a webapp to help bring introductory data science to the middle and high school level.
  • Designed data analysis system that makes "what-if" analysis and immutable data transformations accessible for students.
  • Prototyped and iterated design with teachers and educators to arrive at final product.
  • Ported lessons from the Bootstrap: Data Science curriculum to use new webapp.
  • Webapp built collaboratively with a team of 3 using the React framework and Git for version control.
MedRhythms, Inc. logo

Full Stack Software Engineering Intern

Portland, ME
Summer 2020

MedRhythms, Inc.

  • Worked on agile team of 4 for a digital therapeutics company that uses sensors, music & software to build evidence-based, neurologic interventions to measure & improve walking
  • Created internal webapp for music metadata retrieval, resulting in up to 5x speed-up in gathering human-validated metadata for audio tracks
  • Redesigned UI/UX for webapp to expand user base to non-developers
  • Migrated project to new tech stack for faster development: React & Django with Docker for deployment

Projects

Programming Languages Projects

Skiff image 1Skiff image 2

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

Computer Graphics Projects

Volumetric Renderer image 1Volumetric Renderer image 2

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

Acoustic Projects

Coexistence image 1Coexistence image 2

Coexistence

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

Coexistece 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 Gen image 1ML Chord Gen image 2

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
ChordalPy

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