Portrait of Paul Biberstein
Paul Biberstein

I'm an undergraduate at Brown University interested in programming language and compiler design, as well as 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 spanning all the topics above as well as hardware and web development.

Paul Biberstein's GithubPaul Biberstein's LinkedIn

Work Experience

Brown University logo

Head Teaching Assistant

Providence, RI
Fall 2021

Brown University

CSCI 1730: Design and Implementation of Programming Languages
  • Responsibilities include hiring undergraduate TAs, coordinating staff meetings, developing and updating course content, holding office hours, and grading student work.
Brown University Programming Languages Team logo

Undergraduate Researcher

Providence, RI
Summer 2021

Brown University Programming Languages Team

Developed a webapp to facilitate data science exploration and analysis for the middle and high school level.
  • Worked in team of 3 to deliver React webapp.
  • Redeveloped lessons from the equitable CS curriculum Bootstrap: Data Science to use new webapp.
Brown University logo

Undergraduate Teaching Assistant

Providence, RI
Spring 2021

Brown University

CSCI1260 Compilers and Program Analysis
  • Worked with team of 5 TAs (both undergraduate and graduate) to help professor prepare a redesigned version of a compilers class.
  • Assignments included developing a compiler from a dialect of LISP into x86_64 assembly using OCaml, and an additional selection of parsing and optimization assignments.
  • Responsibilities included developing lab and homework assignments, holding weekly lab and office hours, and grading student work.
Brown University logo

Undergraduate Teaching Assistant

Providence, RI
Fall 2020

Brown University

CSCI 0190 Accelerated Introduction to Computer Science
  • Worked with group of 15 TAs and professor to run a 120 student introductory CS class teaching functional programming, data structures, and algorithms with the programming language Pyret
  • Responsibilities included developing lab and homework assignments, holding weekly lab and office hours, and grading student work.
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
Maine Department of Health and Human Services logo

Web Development Intern

Augusta, ME
Summer 2019

Maine Department of Health and Human Services

  • Audited website for deprecated or non-ADA-compliant code by utilizing web crawling script
  • Received direction from communications director to update current pages and format new pages
  • Built script to scan for pages reporting status code 404 and worked with team to resolve

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

Web Projects

Mix Capsule image 1Mix Capsule image 2

Time capsule playlists delivered to you every month

Description coming soon

Relevant Topics: JavaScript, NextJS, Python, Django, Tailwind, UI/UX, Music
Tempo Trainer image 1Tempo Trainer image 2

Tempo Trainer

Auto-generated, personalized Spotify playlists to keep pace while you run

Tempo Trainer is a web app which harnesses the Spotify API to generate personalized playlists for running. The user enters some basic information, like height and sex, and then selects what sources they want their playlist to be pulled from (for example, their liked songs, their playlists, their most listened to tracks). Finally, they choose a pace they want to run at. Tempo Trainer deposits a playlist in their library containing songs the user already likes that have the correct tempo to help them run at their target pace.

Relevant Topics: JavaScript, React, REST, APIs, UI/UX, Music
One Night: Quarantine Edition image 1One Night: Quarantine Edition image 2

One Night: Quarantine Edition

Play the board game One Night: Ultimate Werewolf and its expansions online

Developed during quarantine in early 2020, One Night: Quarantine Edition allows you to play the popular "One Night" tabletop games online, as well as selected expansions. In "One Night", players are given a secret role on either the villager or werewolf team. Then, the players close their eyes and each takes a turn performing their role's action. After everyone is done, players reopen their eyes and attempt to find the werewolves!

This online version supports private rooms so you can invite your friends and allows as many players as needed. A variety of mechanics are in place to make up for the lack of physical interactions, including swapping cards, poking your neighbor, adding tokens, and more.

Relevant Topics: TypeScript, React, MobX, WebSockets, NodeJS, Express
WikiKu image 1WikiKu image 2

Read Wikipedia articles as poems

Made in just 24 hours for Hack@Brown 2020, WikiKu allows users to peruse Wikipedia articles in poem form through a calming interface. Users give a broad search category either through text input or scrolling a map. WikiKu takes the query and pores through related Wikipedia articles to produce delightful rhyming couplets. These poems are displayed on cards for the user, who can browse through them at a leisurely pace.

Relevant Topics: TypeScript, React, MobX, Python, Flask, REST APIs

Hardware Projects

PyFyPi

PyFyPi

A PYthon-based LED visualizer, powered by spotiFY, running on raspberry PI

PyFyPi is an easy-to-use LED visualizer which hooks into your Spotify account and lights up the room in time with the beat. PyFyPi is run off a Raspberry Pi which provides a simple web-interface where users can authenticate with their Spotify account. As soon as the authenticated user starts playing a song, the LEDs will start pulsing a variety of colors in time with the music. When playback stops, the LEDs will dim and wait for the music to start again.

Relevant Topics: Python, Raspberry Pi, Addressable LEDs, UNIX process control, NodeJS, Express, REST APIs, Music
"Thwack" Ski Timing Gate image 1"Thwack" Ski Timing Gate image 2

"Thwack" Ski Timing Gate

An affordable wireless ski-timing system

The Thwack Ski Timing Gate is a timing system for alpine skiing, consisting of three parts: a start line, a finish line, and an app.

Relevant Topics: Arduino, Raspberry Pi, XBee, Communication Protocols, CAD, 3D-printing, Dart, Flutter, Mobile Development

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