Exercises from think like a programmer