Fundamentals of Discrete Math for Computer Science: A Problem-Solving Primer (Undergraduate Topics in Computer Science)