Computer science abounds with applications of discrete mathematics, yet s- dents of computer science often study discrete mathematics in the context of purely mathematical applications. They have to ?gure out for themselves how to apply the ideas of discrete mathematics to computing problems. It is not easy. Most students fail to experience broad success in this enterprise, which is not surprising, since many of the most important advances in science...