Discrete Mathematics For Computer Scientists