Fundamentals of Discrete Math for Computer Science