Mathematics of Discrete Structures for Computer Science