Essential Discrete Mathematics for Computer Science