Portfolio

A collection of my projects


Card image cap

DeepQHoldem
CS 238 & CS 221

Applying deep Q-learning and neural networks to develop a cost-effective and proficient No-Limit Texas Hold'em poker agent, exploring strategic decision-making in a game of imperfect information.


Understanding and mastering strategic decision-making is a critical pursuit in artificial intelligence, with applications extending to fields such as game theory, decision science, and autonomous systems. By exploring the complexities of decision-making in a game characterized by imperfect information and individual play, this project seeks to contribute valuable insights into the broader realms of strategic artificial intelligence and competitive environments.

Card image cap

WikiArtGAN
Personal Project

Using a Deep Convolutional Generative Adversarial Network to Generate Art.


Generative Adversarial Networks (GANs) are a framework for teaching a DL model to capture the training data’s distribution in order to generate new data from that same distribution. They are made of two distinct models, a generator and a discriminator. My goal in this project was to form a direct extension of a GAN that explicitly uses convolutional and convolutional-transpose layers in the discriminator and generator, respectively. By training this model on the WikiArt dataset, I was able to produce resulting generated images that genuinely embody elements of real artwork.

Card image cap

GeoGuessing With Photo Localization and Deep Learning
CSCI 1430

GeoGuessr is a geographic discovery game. We've automated it.


Our goal was to utilize a trainable convolutional neural network (CNN) model to predict the geographical location of a set of images. By first thoroughly training the model with Google Street View images, we then put the model to the test by feeding it scraped images directly from GeoGuessr games based in the United States. Our model then decided on which states it believed that GeoGuessr had placed them in geographically.

Card image cap

Contrastive Self-Supervised Image Classification with SimCLR
CSCI 1470

Training an image classifier without using labels by building a model that can generate labels needed for training from the images themselves!


Implemented a contrastive self-supervision model to learn image representations from unlabelled data and investigate its performance for an image classification downstream task. The overall outlined learning framework is semi-supervised and trained in two stages. First we implemented simCLR to extract image feature representations without using labels. Then, we used a labeled dataset to train a classifier on top of our learned feature backbone for the classification task.

Card image cap

Swish Science
CSCI 1951A

Predicting NBA Success using Data Science and Visualization


Our research project aims to revolutionize NBA team performance prediction through advanced modeling and analysis of historical and current season data. We seek to understand the factors that influence a team's success and create an accurate prediction model by exploring team and player statistics. Our findings have implications for NBA enthusiasts, sports analysts, team owners, and sports bettors, providing improved decision-making and precise projections of team performance. Ultimately, our research has the potential to significantly impact the dynamic world of professional sports.

Card image cap

genClassBezier2D
Personal Project

A short project with the goal of generating a small 2D image dataset of abstract shapes (formed using Bezier curves) and then training a model to classify them.


Recognizing shapes is an essential task in computer vision. An amalgamation of different application areas rely heavily on shape recognition, including robotics, healthcare, security systems, and assistance for the impaired. My goal with this project is to first provide a procedure for generating a few datasets of abstract 2D shapes (formed using Bezier curves). I then prepare the architecture for a simple convolutional neural network (CNN) to classify said shapes based on complexity.

Card image cap

CelebrityJumble
Personal Project

Scrambles the thoughts of popular celebrities


CelebrityJumble is a Twitter bot that I created in Python. It utilizes Tweepy and the Twitter API along with OAuth to collect and reproduce tweets. On top of this, extensive error handling is needed in order to successfully run CelebrityJumble. I personally have CelebrityJumble on my laptop set to run 7 times a day automatically with Automator and the Unix crontab command. This tweets to the account @CelebrityJumble, which I made for this project.

Card image cap

Weather Scraper
Personal Project

Quickly retrieve the current weather in any US city


Weather Scraper is a tool that fetches the current temperature and other useful information of any city in the United States. It's a data scraping project written in Python. Weather Scraper retrieves data using GeoPy, parses it through Beautiful Soup, and finally returns it to the user in a simplified form.

Card image cap

covidTable
Personal Project

Track COVID-19 Statistics in real time


This tool scrapes data about COVID-19 cases and then presents it in a neat table format. Written in Python, covidTable parses data with Beautiful Soup. Afterwards, the data is presented with the texttable module.

Card image cap

Music Visualizer
Personal Project

Generate unique graphics based on audio


This project visualizes audio. Written in Java, Musical Visualizer utilizes the Processing graphical library with basic drawing and another library called Minim to analyze any audio file. I created and taught children about this project as an Online Instructor with iD Tech Camps.

Card image cap

Opening Night
BRGD

A multiplayer trap setting game


Opening Night is a top-down game where one player must design a maze of traps for the other player to navigate. Player 1 acts as the trap setter, choosing where to place traps that will slow, stop or divert the other player. Player 2 is the trap navigator who must use limited light to navigate the traps all while being chased by the slow moving Player 1. Created in Unity; written in C#.

Card image cap

autoTagger
Signs.com

A small script I've built to help reduce tagging time


This functional program automates and expedites the tagging process for my part-time work. Written in Python, autoTagger integrates Selenium WebDriver APIs to optimize agent tagging with a 25-33% reduction in process duration.

Card image cap

Swype
Techno Studios

Fast-paced arcade fun in the palm of your hand


Swipe arrows left and right in this fast-paced arcade game! Swype is a unique arcade game where you have to swipe arrows in the designated direction before time runs out! Be careful though, if you swipe the wrong direction, you lose! Created with Android Studio; written in Java.

Card image cap

MindMap
YHack 2019

Revolutionizing education through transcription and visualization


MindMap is a web application that can create a transcription from a video lecture that is then condensed and compiled into a simple to use and fun word-map diagram. MindMap utilizes the Google Cloud's Speech-to-Text API (through both Python and Java) in order to create a seamless transition in a fraction of the time that it would take to sit and watch the lecture.