Applied Discrete Structures for Computer Applications