Final version - Chapter 8, Programming Project 7