discrete mathematics and theoretical computer science