Research + Projects
Contents
PL Research / Projects
Mica: Automated Differential Testing for OCaml Modules
(OCaml Workshop ’24 paper) (ICFP ’23 SRC poster) (GitHub) (Web demo)
- Mica is a PPX compiler extension which automates differential testing for OCaml modules. Mica automatically generates property-testing code specialized to the interface, checking if two modules are observationally equivalent.
- Available to install via Opam
- Presented paper at the OCaml Workshop 2024 (co-located with ICFP ’24)
- Received Second Prize at the ICFP ’23 Student Research Competition
- Advised by Harry Goldstein & Professor Benjamin Pierce
Mechanized Type Soundness Proofs for the Hindley-Milner Type System
- Mechanized type soundness proofs for the Hindley-Milner (or “Damas-Milner”) type system using the locally nameless representation in Coq, along with the LNGen & Ott metatheory tools.
- The proofs are for the non-syntax-directed version of the HM type system, as presented in Peyton Jones et al. (2007).
- Joint work with Gary Chen & Zed Wu, advised by Professor Stephanie Weirich
- Final project for CIS 6700 (Advanced Topics in Programming Languages)
Literature Reviews / Independent Studies
Survey: Differentially Private Streaming Algorithms
- Discussed the theory of Differential Privacy (DP) and recent work from the algorithm design & PL literature incorporating DP into streaming algorithms.
- Joint work with Kavish Shah, advised by Professor Michael Kearns
- Final project for CIS 6250 (Theory of Machine Learning)
Asymptotic Behavior of Cliques in Inhomogeneous W-random Graphs
- Hladký et al. (2021) proved a limit theorem for the no. of cliques in W-random graphs (an inhomogeneous variant of Erdős-Rényi random graphs). In these slides, I introduce the relevant background in graphon theory, provide a high-level overview of Hladký et al.’s proofs & conduct numerical simulations in Python verifying their results.
- Independent study, advised by Anirban Chatterjee & Professor Bhaswar Bhattacharya (via Penn’s Undergraduate Research in Probability & Statistics program)
Proving Pólya’s Random Walk Theorem using Electric Network Theory
- In these slides, I discuss the applications of electric network theory to random walks on integer lattices, focusing on Doyle & Snell’s (1984) proof for Pólya’s Random Walk Theorem.
- Independent study, advised by Eric Goodman & Professor Mona Merling (via Penn Math’s Directed Reading Program)
Lectures
Programming in the Untyped λ-calculus
- Slides for a talk I gave for CIS 6700 (Advanced Topics in Programming Languages)
-
In these slides, I cover the Church & Scott encodings of various
datatypes in the untyped λ-calculus,
following the presentation in Pierce’s Types & Programming Languages textbook.
Parsers in Haskell
- Slides for a guest lecture for CIS 1940 (Introduction to Haskell)
-
In these slides, I cover monadic parser combinators (à la Parsec),
Haskell’s
Applicative
typeclass & testing parsers using QuickCheck. -
I also designed an assignment where students build a parser for
Lisp-style S-expressions using
Applicative
functors, and test the correctness of their parser using round-trip properties in QuickCheck.
Other Programming Projects
SQL to Pandas Translator
- A tool for translating SQL queries into equivalent Pandas queries, implemented in Haskell.
- I worked on implementing a parser for SQL queries using monadic parser-combinators, and verifying the correctness of the parser using QuickCheck.
- Joint work with Jason Hom, mentored by Joe Cutler
- Final project for CIS 5520 (Advanced Programming)
PennOS
- A Unix-esque operating system implemented in C (~10k lines of code)
- I worked on the OS kernel, in particular implementing the scheduler and handling signals/process statuses, as well as integrating the kernel with the shell.
- Joint work with Mati Davis, John Smith, Rohan Verma, Keshav Ramji
- Final project for CIS 5480 (Operating Systems)
HomeLab
- Custom VPN + Media server, hosted on a PC salvaged from Penn’s E-Waste facilities
- Joint work with Aaron Shurberg
- Final project for CIS 1880 (DevOps)