1. Product of Primes between N and 2N (C++) -- This was a fun, impromptu collaborative effort, and I wrote a blog post about it. The code was eventually rendered redundant (after it did its job) by a vastly improved upper bound that didn't even require any parallelism, but I still learned a lot about how to parallelize some mathematical code with OpenMP and how much some up-front mathematical work can actually vastly improve the final runtime.
  2. Hill Cipher Webpage (C++) -- Implemented the Hill Cipher (modulo 97, which is convenient since 97 is prime), which itself uses a multithreaded (OpenMP) and cache-friendly (I swapped the j- and k-indices in the for loops in the matrix multiplication) matrix library that I implemented, and I developed a basic websocket server using Boost.Beast to make a browser-based demo.
  3. Cesaro Approximation of π (Scheme) -- While studying MIT's SICP course, I did a project where I studied Linear Congruential Generators using Knuth's Art of Computer Programming (Volume 2), implemented the MINSTD PRNG, and used it to approximate π via Cesaro's Monte Carlo method. This uses my favorite result in mathematics (probability that two random integers are relatively prime = 6/π^2), and I include a write-up for both LCGs and a proof-of-correctness of the algorithm in the repository.
  4. SHA-1 Hash Implementation (C++) {NOTE: Do not use SHA-1, it's broken (SHAttered, even).} -- This is a fully-constexpr SHA-1 implementation that I wrote as an educational exercise while studying Cryptography.
Edit
Pub: 30 Apr 2024 07:16 UTC
Edit: 01 May 2024 21:43 UTC
Views: 63