introduction to discrete mathematics for computer science specialization