The material is self-contained, and the topics range in difficulty from elementary to advanced. While students can learn important principles and strategies required for problem solving, lecturers will also find this text useful, either as a supplement or text, since concepts and techniques are developed in the problems.