Discrete Mathematics for Computer Scientists by