In this project I explore the effectiveness of various sampling algorithms in solving the informative path planning problem. In this case the task is to learn a 2D field (e.g. temperature map). The belief state of the field is modelled using a Gaussian Markov Random Field (GMRF) which is sequentially updated with Bayesian conditioning. The paths are planned to minimize the variance of the belief state.
In this project I implement the expectation maximization (EM) algorithm for a mixture of Gaussians model. Here the EM algorithm iteratively updates the covariance matrix, and mean and weight of each cluster.
In this project I create connect-4 AI players using a minimax tree search algorithm with alpha-beta pruning and other added heuristics (e.g. favoring the middle, and favoring having rows of 2, 3).
I worked through the content of Stanford's online course CS224U Natural Language understanding. The course used many of the most popular Python ML libraries including numpy, tensorflow, pandas, and scikit-learn.
In this project I create a perceptron and then multilayer perceptron (neural net) from scratch and test them on housing data from the US census in a simple classification problem deciding whether the house has price greater than $50,000.
I completed the projects in Bryant and O'Hallaron's textbook Computer Systems: a Programmer's Perspective.
The projects included:
(1) recreating a dynamic memory allocator for C
(2) creating a simple Unix shell
(3) using spatial and temporal cache locality to optimize code
(4) understanding and implementing buffer overflow attacks
(5) stepping through and debugging assembly code