Practical Discrete Mathematics by Ryan T. White