The document is a preface to a course on discrete structures. It introduces some key concepts in discrete mathematics that are important for computer science, including sets, functions, relations, proof techniques, number theory, counting, probability, logic, and graph theory. It provides examples of how these discrete mathematics topics apply to problems in computer science like network design, algorithms, web searches, security, and more. The preface concludes by discussing how mathematical statements can formally define concepts like zero-knowledge proofs that are important for applications such as secure banking protocols.