We designed a distributed key-value storage system in Java capable of handling network partitions and redistributing shards across replica groups while maintaining linearizability. We implemented a version of multi-Paxos, as described in in Robbert van Renesse's famous paper Paxos Made Moderately Complex, to ensure fault tolerance of replica groups. (Fun fact: Prof. van Renesse was actually my operating systems professor in undergrad.) We optimized our Paxos implementation with mechanisms for garbage collection and electing a distinguished proposer. The project was carried out in a framework that was created by a research group at the University of Washington, known as DSLabs. The DSLabs framework provides correctness and performance tests for our distributed key-value store, and is also equipped with a model checker. Since the framework is used by students at other universities, I am unable to publicly post our code for academic integrity reasons. However, I am more than happy to talk about the project on an individual basis, so feel free to reach out if you would like to hear more about it. Check out the Github repo for the DSLabs framework below.
DSLabs Github RepoWe designed a functional programming language for concurrent programming, known as ChipotLang. Our vision was that ChipotLang could be used as an educational tool to help bridge the gap between functional and systems programming. The interpreter, which was built in OCaml, translates functional expressions into continuation-passing style (CPS) and then evaluates them using the semantics of lambda calculus.
Github RepoWe created an interpreted domain-specific language (DSL) in OCaml for mathematical computations. We built a read-eval-print-loop (REPL), where users can write OCamulator code and obtain results, similarly to MATLAB's shell. The OCamulator language is capable of linear algebraic computations, such as row reduction, PLU matrix factorization, solving linear systems, inverting square matrices, finding determinants of square matrices, and matrix-vector arithmetic. In the OCamulator language, users can also perform basic arithmetic, solve algebraic expressions symbolically, calculate statistical measures of datasets, perform linear regressions, and evaluate PDFs and CDFs for various common probability distributions.
Github RepoI rigorously proved that the t-distribution arises from sampling normal populations when the variance is unknown and is taken from the sample itself. The proof relies on topics from probability theory, statistics, linear algebra, and multivariate calculus.
ProofI built a deep learning model for predicting the modulation scheme used to encode a radio signal using time series data - specifically, the in-phase and quadrature (I/Q) components of a signal sampled at a periodic rate. After experimenting with a variety of machine learning algorithms and models, the final model chosen was an ensemble of convolutional neural networks. With ten possible modulation schemes in the dataset and low signal-to-noise ratio, this model was able to predict which scheme was used to encode a given signal with 61.820% accuracy on the test set.
Github RepoReport