Search Engine

April 2024

A search engine for wikipedia pages. I worked on this project with two classmates in my Web Systems course. The set of wikipedia pages was given to us by the instructors. We first cleaned up the documents and then calculated an inverted index using the Madoop map-reduce framework. Next we made the index server, a REST API app to return search results ordered by their PageRank. Finally we created the search sever, a user facing app which queried the index server and returned results in HTML format.

Project image

Scheme Interpreter

March 2024

A lexer, parser, and metacircular evaluator for Scheme...written in Scheme! I worked with a partner to implement the R5RS language specification. This was a great project where I did a lot of recursion, practiced writing programs in the functional paradigm, and also practiced reading language specifications. We also extended the Scheme language with a special mu form pictured below. It creates anonymous procedures which use dynamic scope.

Project image

Reliable Transport

March 2024

A project for my computer networks class where I worked with a partner to implement a reliable transport protocol on top of UDP. Using a sliding window mechanism, we provided inorder, reliable delivery of UDP datagrams in the presence of events like packet loss, delay, corruption, duplication, and reordering.

Project image

Bus Attack

February 2024

A Blue Bus themed tower defense game. I wrote this game in 7 days over spring break as a crash course in game development and Pygame. Beyond that I found the project was valuable in practicing event driven programming. It is nowhere near polished since it was created in such a short time frame so I may return to it in the future to add some finishing touches or convert it into a more general tower defense game engine.

Project image

Pipelined Processor

November 2023

A cycle-accurate behavioral simulator for a pipelined implementation of the LC-2K ISA, complete with data forwarding and simple branch prediction. This project really helped me understand the basics of how a CPU works.

Project image

Visualizing Bias in Gender Recognition

June 2023

A Convolutional Neural Network (CNN) is a type of deep learning algorithm which is often used for image classification tasks. One such task is the classification of a person’s gender based upon an image. These gender classification models often pose a bias towards transgender and dark skinned individuals. Such biases are compounded by the fact that large neural networks function as black boxes and lack interpretability; it is difficult to explain why a model classifies an image in a particular way. I investigated Gradient-weighted Class Activation Mapping (Grad-CAM) as a visualization tool which can explain how gender classification models make their decisions.

Project image