PROJECTS

I've done over 50 programming projects as an undergraduate CS student. Here are just a few of them that stand out to me. For some of these projects, I cannot display the source code here due to academic integrity. However, I would be happy to share the code if requested. A good portion of these projects are public on my GitHub Page. (Link to GitHub is in the home page)

PATH FINDING ALGORITHM VISUALIZER

Designed an interactive program to show the visual differences in the traversals of 4 graph algorithms; Breadth-First Search (BFS), Depth-First Search (DFS), Uniform Cost Search (UCS), and A* Search

MST ALGORITHM VISUALIZER

Designed an interactive program to show the visual differences between Prim's Algorithm and Kruskal's Algorithm

PLANETARY ORBIT SIMULATION

Designed a 2D graphic of the approximate orbits of the planets in the solar system

MULTI-AGENT SEARCHING

Constructed adversarial agents for the classic Pacman game through various search algorithms and evaluation functions

REINFORCEMENT LEARNING

Implemented a series of reinforcement learning techniques for a simulated robot controller and Pacman

MULTIPLE RETURN VALUES

Implemented the “values” and “let-values” forms of the Racket language to add a multiple return values feature to a subset of Racket, called Iniquity

MICROCAML LEXER, PARSER, INTERPRETER

Created a small scale programming language (MicroCaml) loosely based on OCaml, along with mutop, a REPL for MicroCaml

REGULAR EXPRESSION ENGINE

Constructed a finite state machine using OCaml to simulate how regular expressions accept and reject input strings

BLOOM FILTER

Built a system to manage the recording of passwords that have undergone hacking attempts

KD-TREES

Constructed two different binary tree variants of a multi-dimensional data structure like a quadtree; extended and self-balancing

DYNAMIC PROGRAMMING IN HASKELL

Created a project that shows how to use Haskell’s built-in features to solve 5 dynamic programming problems; Fibonacci, longest subsequence, buy low sell high, rod cutting, edit string distancing

ORDERS PROCESSOR

Designed a Java multithreaded system to allow clients to buy items of their request if they are in stock