Personal Projects
Take a look at some of the personal projects I’ve worked on— some for fun and exploration, and others as tutorials to deepen my understanding of concepts in machine learning and uncertainty quantification!
Published
Sudoku
I’ve always enjoyed playing Sudoku. One day, while solving a puzzle, I thought to myself, "This is a pretty systematic process!" That’s when it hit me: "I could probably code a solver for this!" And so, this Python project was born.
My Sudoku solver is based on the human way of solving this puzzle: looking at the rows, columns, and 3-by-3 blocks, and listing all possible numbers that can go into each empty cell. This is by no means the fastest algorithm---for once, I wrote it completely in Python! But it was fun to translate human thought into lines of code.
I also attempted to create a web app, but I don't have a public domain yet. For now, the solver runs locally, but I plan to host it online in the future! In the mean time,
Give it a try!
UQ tutorial
I initially created this project to store common code snippets I frequently used in my research. Over time, I transformed it into a tutorial to introduce uncertainty quantification—particularly for new undergraduate students joining our group or other students in my research group during graduate school.
In this tutorial, I present a geometric interpretation of uncertainty quantification, which I learned from my academic advisor, Mark Transtrum. I focus on methods for small empirical models, including derivative-based sensitivity analysis via the FIM and MCMC. I plan to expand this tutorial by incorporating additional UQ methods for empirical models in the future.
Work in progress
-
Gaussian process tutorial
I first thought of creating this tutorial after frequently hearing about Gaussian Processes from our collaborator. Curious to learn more, I wanted to explore both the what and how behind them. -
NN tutorial via Pytorch
This tutorial was created to help me familiarize myself with and keep track of different neural network architectures, such as CNNs, RNNs, and graph-based NNs. This is a particularly new project for me, and there’s still a lot more to add. -
python-rubik
Unlike my Sudoku solver, which I built from scratch, I forked an existing Rubik’s Cube solver. My plan is to enhance the user interface, for example, by adding a command-line interface option. -
Tetris
I started this project to learn a new graphical user interface framework in Python, such as Pygame. I based the code on the tutorial by TechWithTim. To make it even more motivating, my wife also loves playing Tetris!