While most people understand that computing depends at its core on mathematics; most do not understand the peculiar nature of the mathematics underlying computing. Modern computers are digital; that is, they work with distinct values that can be represented by (binary) integer codes. The mathematics that deals with the manipulation of distinct or discrete values is called discrete mathematics.
This courses approaches discrete mathematics from a point of view that is practical for computer science students. We will cover logic, proof, sets, relations, functions, recursion and induction, counting principles, and probability, all with an eye to how they are used throughout computing. We will use functional programming in Haskell as a way to visualize and demonstrate these mathematical structures.
To meet the objectives for this course, you will be able: