Presents the fundamental topics of discrete mathematics that are introduced from the perspectives of a pure mathematician and an applied computer scientist. This book helps readers learn how to formally define abstract concepts, reason about objects, investigate properties of algorithms, and prove their correctness.