Term project for CS3102: Theory of Computation at University of Virginia