Programming Projects

Product of Primes Between $N$ and $2N$
Completed: 21-July-2022

I made a parallel counterexample-searching algorithm for a lemma found in a set of MIT course notes. In the blog post below, I got over the details of the theoretical work done to reduce the search space of the problem, as well as a bit about the implementation details.

GitHub Repository

Relevant Blog Post

Fully Constexpr SHA-1
Completed: 13-February-2024

I implemented the SHA-1 hashing algorithm in C++ in such a way that it works at compile time.

WARNING: This is not a secure hash functon. This project was developed for educational purposes only.

GitHub Repository

Erdős–Straus
Completed: 08-February-2025

I implemented an algorithm which, when given an integer $N \geq 2,$ will search for positive integers $x,y,z$ which satisfy the Erdős–Straus Conjecture. In the blog post below, I go over how I implemented and optimized the algorithm without using the literature beyond some basic modular identities, which I also give the proofs of.

GitHub Repository

Relevant Blog Post

$p$-adic Valuation (and Legendre's Formula)
Completed: 12-February-2025

I implemented an algorithm to find the $p$-adic Valuation of an integer, as well as Legendre's formula for the $p$-adic valuation of $n!$ for any integer $n\geq 0.$ I also included basic optimizations for the $p=2$ case making use of special properties and x86 instructions, the details of which are available in the blog post linked below.

GitHub Repository

Relevant Blog Post

Studying Data Structures & Algorithms
Completed: 20-August-2024

I compiled my notes and mini-projects from the edX courses from Georgia Tech on Data Structures & Algorithms, including both Java and C implementations of doubly-linked lists, binary search trees, AVL trees, deques, pattern-matching algorithms, and some common dynamic programming algorithms. I also used SDL in C to implement a sorting algorithm visualizer (details below).

GitHub Repository

Sorting Algorithm Visualizer
Completed: 08-August-2024

This is a sub-project of the "Studying Data Structures & Algorithms" project above that I believe is worth listing separately. I implemented several sorting algorithms in C and used SDL to visualize the algorithms. This visualizer includes the option to output the resulting visualizations to video files using FFmpeg.

Sorting Algorithms Implemented: Bubble Sort, Insertion Sort, Selection Sort, Merge Sort, Heap Sort, Quick Sort (multiple variants), Introsort, Bogosort, and Slowsort.

You must provide your own font.ttf and FFmpeg binaries.

You might have to reload the page if the embedded videos don't load initially.

GitHub Repository

Resume