CS61C Project 3.