This course introduces some of the basic ideas of discrete mathematics, including graph theory, algorithms and their complexity, languages and grammars, and finite state machines. The course assumes familiarity with the foundational concepts of logic and sets, numbers and counting, relations and functions, probability and combinatorics, which have been covered in other courses. The objective is to solidify a foundation for understanding the mathematics of digital computing.

Online or Downloadable References for the Course: