COMS 3203, Discrete Mathematics

The study of discrete mathematics provides an important foundation for basic theoretical principles in computer science. We first build a strong foundation in logic, formal proofs, and mathematical induction. We then examine the discrete structures of functions, relations, and graphs, which provide different ways of representing relationships, connections, and networks. Finally, we move onto numerical and computational aspects: number theory and modular arithmetic, counting and combinatorics, and discrete probability. Throughout the course, we will also see computer science applications and practice writing implementations in Python.

Course Objectives

  • Build a strong foundation for all of mathematics in proofs and logic.
  • Apply rigorous proof techniques, including direct proofs, proof by counterexample, proof by contradiction, and proof by induction.
  • Manipulate and describe relationships between sets of objects using relations and functions.
  • Understand basic concepts in graph theory, including Eulerian and planar graphs, and their usage in modeling a variety of CS problems.
  • Understand basic concepts in number theory, such as gcd, factoring, and modular arithmetic, and apply them to applications such as cryptography.
  • Count various sets or operations on objects, write combinatorial proofs, and characterize limits of countability.
  • Solve discrete probability problems, compute properties of random variables, and apply common probability distributions.

Prerequisites

  • An introductory programming course (COMS 1004/1007)
  • Mathematical maturity past single-variable calculus is strongly recommended

General List of Topics

  1. Set theory
  2. Propositional and predicate logic
  3. Rules of inference
  4. Direct proofs; proof by cases, contrapositive, counterexample
  5. Mathematical induction, strong induction
  6. Functions
  7. Relations; order and equivalence relations
  8. Graph theory, special graphs and trees
  9. Eulerian trails and cycles
  10. Hamiltonian cycles, graph isomorphisms
  11. Number theory, divisibility
  12. Modular arithmetic
  13. GCD, Euclid’s algorithm
  14. Prime numbers and factoring
  15. Primality tests, RSA algorithm
  16. Counting and pigeonhole principle
  17. Permutations and combinations
  18. Combinations with repetition, binomial coefficients
  19. Discrete probability and random variables
  20. Joint and conditional distributions
  21. Special probability distributions