CS61C Project 4.