Discrete Mathematics With Algorithms