Rather than a rote "cookbook" approach to problem-solving, this book offers a rigorous treatment of the principles behind the practices, asking students to harness their sound foundation of theory when solving problems. A wealth of examples illustrate the meaning of the theory without simply offering recipes or maps for solving similar problems.