Projects

Python
Search Engine
I built a complete search engine from scratch that utilizes
porter stemming, TF.IDF scoring, and HTML tag-based
weighting to retrieve high relevance web
pages within
300ms
from a corpus of over 100,000 web pages. The search engine utilizes both an inverted index
and meta-index, created during the indexing phase, to quickly search
the corpus for the most relavent documents for a given query.

Go
Shell
I built a Unix-like shell that supports key features found in shells like Bash and Zsh. It
has support for multi-command pipelines with the
|
operator, the ability to
redirect stdin, stdout, and stderr, and support for command autocompletion by pressing the
TAB
character. The shell also comes with builtin commands found in other shells
such as cd
, echo
, and history
.

Python
Grep
I recreated the popular command line utility grep, used to search for patterns in plaintext
using regular expressions. It uses a custom regex engine built from scratch that supports a
subset of perl-style regular expressions. Some of the support syntax inlcude repetition
operators such as
*
, +
, and ?
, range
quantifiers with {n, m}
, and grouping with (...)
. All matches are
color coded in red and the text to be searched can be a file or read from stdin.

Go
Web Crawler
I built a concurrent web crawler capable of efficiently scraping HTML documents from the
World Wide Web.
The crawler performs a breadth-first search from a given start URL and utilizes
goroutines to parallelize the crawling process. Scraped documents are saved as JSON files
containing the URL and HTML content of webpages. The crawler can be customized to limit
which domains
can be crawled as well as limit the number of documents to crawl.

C++
Text Editor
I developed a text editor in C++ that suports over a dozen commands such as Backspace,
Delete Line, and Undo. The editor is based around a completely textual user interface that
runs in a shell window such as text editors like vim. It has most of the features you
would expect from a basic text editor including window resizing.

Python
Process Manager
I built a process and resource manager that simulates the creation and destruction of
processes as well as the acquisition and release of resources. Processes are represented by
a process control block which store a process's state, priority, and the resources it holds.
Resources are represented by a resource control block, which store information about a
resource such as availability.

Python
Stock Strategies
I created a program that analyzes stock data and generates a report on potentially opportune
times to buy or sell a given stock. The report is generated using automated
buying-and-selling strategies
based on indicators such as True Range and Simple Moving Averages. The application utilizes
the Alpha Vantage API to obtain current and past stock information used in the analysis.

Python
Columns
I recreated from scratch the match-three video game Columns, which was released by Sega in
1990. The goal of the game is too match three or more tiles of the same color in a
horizontal, vertical, or diagonal line before they pile all the way to the top of the board.
This was my first project that involved creating a GUI and was made using the Pygame module.

Python
Simultons
I created a simulator that simulates two types of simultons, predators and prey. The main
type of predator is a stationary black hole which 'eats' prey it comes into contact with.
Balls are the prey, which travel in a straight line and bounce off the edges of the canvas.
The GUI was written using the Tkinter Library.