http://www.cs.cornell.edu/Info/Courses/Spring-96/CS514/hw.02.html CS514: Homework 2