This book teaches students in the mathematical sciences how to reason and model combinatorically. It seeks to develop proficiency in basic discrete math problem solving in the way that a calculus textbook develops proficiency in basic analysis problem solving. The three principle aspects of combinatorical reasoning emphasized in this book are: the systematic analysis of different possibilities, the exploration of the logical structure of a problem...