Discrete mathematics for computer science