Computer Science

There's nothing more satisfying than finally solving a problem you've been working at for a while, especially when the result is a useful or visually interesting project. I like computer science because it involves creative problem solving to reach an interesting result.

DoG image stylization

Original Photo by Austin Chu. Right: original image. Left: image after DoG filter.

Image stylization using the Difference of Gaussians (DoG) algorithm. DoG can be used for a variety of image stylization techniques; here is it set up for edge detection. I implemented the algorithm using Java.

Two Not Touch puzzle generator

Official 10x10 Two Not Touch puzzle

Randomly generated 10x10 puzzle

My favorite puzzle game is Two Not Touch by krazydad, also called Star Battle Go. I downloaded an app with puzzles on my phone, but eventually ran out. Instead of buying more puzzles, I decided I would try to build a program to generate them automatically. It was a lot of work, but I eventually succeeded in making an algorithm that could generate any square two not touch board. You can see the command line output displaying a generated 10 by 10 board on the right. That was my original implementation of the generator in Java, and I've since polished it a lot and turned it into an interactive website!

8-bit breadboard computer

This is a computer built from nothing but basic logic gates, plus a bit of RAM and ROM. It can do basic math, store and retrieve numbers, has an adjustable clock, and is fully programmable. To build it, I followed a tutorial series by Ben Eater. In building this, I learned a lot about circuit design, electricity, and how computers work at the hardware level. I hope to someday expand it to include more RAM, more storage, and a better input/output system.