Discrete Mathematics for Computer Science