A list of projects I've worked on
LinkedIn Profile
- NumberStringComparer An enhancement for sorting to solve the problems with using mixed type collections
- Game of Life Simulator A C# implementation of John Conway's Game of Life
- tolowercase A joke idea to convert any text input to lowercase
- Movie Endtimes A few JavaScript functions to identify which movie you should see first in order to minimize the time between
- YouTube Chronological Order
Intended to help you binge all the videos from a channel oldest to newest easily & simply - Password Revealer with Keyboard Shortcut
Simple extension to reveal password via button click orAlt+R
- UVM Blackboard Autofill NetID
Autofill NetID when logging into Blackboard & syncs across signed-in Chrome browsers
- PHP Magic Linking
My own invention: a PHP template that simplifies linking to nested folders & automatically print the correct number of../
before links - Merrill's Roxy Cinema
Website Final project for database class (CS 148) focusing on the back end managing adding movies & updating showtimes for a generic movie theater - Invert Checkbox Selection (& deselect radio buttons)
I created my own jQuery functions based on several examples because I wasn't happy with any existing solutions - UVM Bikes
Website Final Project for web design & css class (CS 142) - Pure CSS Dropdown
Adapted existing tutorial to create mobile-friendly responsive menu. (Most work is not mine, but I added comments to help myself & simplify some CSS) - Intro Web Design Final Project
Very simple site for a fake graphic design company. Not my proudest work now, but it was a start when I was learning
- Books 4 Equality repository and Live Site
Website for a Student-run club that lends out free textbooks to UVM students
Site runs in Node.js but I mostly worked on the front-end
- GPA Calculator
A GPA calculator in JavaFX attempting to use the Model View Controller (MVC) pattern - Even or Odd Game
Replicated a simple Android app using JavaFX & skills I learned from CS 110 at UVM - Tetris Game
Final Project for CS 110 at UVM - Minesweeper Algorithm
Simple iterative solution to counts mines in Minesweeper - Mastermind Board Game
Command line implementation of the board game Mastermind for a Software Engineering class - Set Game Valid Set Finder
Algorithm to find valid sets in the Game Set & potentiall provide hints. Iteratively implements n choose k for combinations & checks if any are a valid set. - Fibonacci Algorithms Runtime Comparison
Array Memoization, Recursive & Phi (Golden Ratio) formula - Prime Factorization (Java)
Cobbled together various existing algorithms for finding Prime Factors. I did not design the algorithms, but focused on creating a way for users to interact more easily - Pascal's Triangle
Used my knowledge of Java arrays to print out an arbitrary number of rows of Pascal's Triangle - Java Rounding Improved
A function that allows you to specify how many decimals to round to - Java Random() Improved
Several overloaded methods to allow you to specify an upper and lower bound for random numbers - Loop Performance (
i++
vs++i
)
Runtime comparison between post and pre increment - Algorithm Implementations
- Graph Algorithms
- Breadth First Search / Depth First Search
Implementation of the common BFS & DFS algorithms - Bipartite Graph Testing Algorithm
Modification of Breadth First Search to identify bipartite graphs - Strong Connectivity
Application of Breadth-First Search to see if a directed graph is Strongly Connected - Topological Ordering
Finds a Topological Ordering of vertices in a Directed Acyclic Graph
- Breadth First Search / Depth First Search
- Greedy
- Interval Scheduling
Greedy Algorithm to find the maximum number of mutually compatible jobs - Interval Partitioning
Java Implementation of the greedy algorithm for the Interval Partitioning Problem - Minimizing Lateness
Greedy Algorithm to minimize lateness when scheduling jobs on a processor - Kruskal's Algorithm
Finds a Minimum Spanning Tree from a graph. Add lowest weight edges unless doing so causes a cycle. - Reverse Delete Algorithm
Greedy Algorithm to find a minimum spanning tree in an undirected graph by deleting heaviest edges unless it would disconnect the graph
- Interval Scheduling
- Divide and Conquer
- Counting Inversions
Finds how similar 2 lists of rating are using the Divide and Conquer approach. Extension of MergeSort that actually displays the specific inversions as well as just counting the total number.
- Counting Inversions
- Dynamic Programming
- Weighted Interval Scheduling
The classic Dynamic Programming problem implemented in Java - Knapsack Problem
Implementation of the classic 0-1 Integer Knapsack Problem - Sequence Alignment
Find the minimum cost of aligning 2 sequences allowing gap insertion - Bellman-Ford Algorithm
Shortest Paths from every vertex to a goal vertex allowing negative-weight edges
- Weighted Interval Scheduling
- Flow Networks
- Ford Fulkerson Max Flow Algorithm
Finds max flow / min cut in a Flow Network. (Simple version, no capacity scaling) - Bipartite Matching Algorithm
Extension of a Ford Fulkerson max flow problem to solve bipartite matching - Circulation with Demands
Given a directed graph with edge capacities and vertex demands, is there a circulation of flow?
- Ford Fulkerson Max Flow Algorithm
- NP-Complete Certifiers
- 3-SAT (Satisfiability) Certifier
Polynomial-time certifier algorithm for the NP-Complete 3-SAT Problem
- 3-SAT (Satisfiability) Certifier
- Approximation Algorithms
- Load Balancing Problem
Approximation Algorithm for the NP-Complete problem of balancing job loads on machines. Does not guarantee an optimal solution, but instead, a solution is within a factor of 1.5 of the optimal solution - Minimum Weighted Vertex Cover (Pricing Method)
Approximation Algorithm for the NP-Complete problem of finding a vertex cover of minimum weight in a graph with weighted vertices. Guarantees an answers at most 2 times the optimal minimum weighted vertex cover
- Load Balancing Problem
- Graph Algorithms
- Binary Hexadecimal Conversion
Convert hex to binary & binary to hex - Alphabet Guessing Game (Python)
A very simple game to guess the numerical representation of a letter in the alphabet, or guess the letter from the number (A=1,B=2,...Z=26).
A semi-trivial game, but I did this to try and teach myself to associate letters with numbers, not just the alphabetical order of letters
- Rush Hour Game
Group Project creating a version of the board game Rush Hour in C++ using OpenGL & GLUT