Discrete Mathematical Tools for Computer Science
The Hong Kong University of Science and Technology via Coursera Specialization
Overview
Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
This specialization builds the core discrete mathematics toolkit used throughout computer science, with a focus on logic, counting, algorithms, recursion, and probability. Learners develop rigorous problem-solving and reasoning skills that are essential for algorithm analysis, data structures, cryptography, and theoretical foundations of computing. Through practical examples and proofs, the courses emphasize how discrete mathematical concepts directly support efficient and correct algorithm design.
Syllabus
- Course 1: Discrete Math for Computer Science - Logic & Set Theory
- Course 2: Discrete Math for Computer Science - Counting & Probability
- Course 3: Discrete Math for Computer Science - Algorithms & Recursion
Courses
-
This course focuses on the mathematical foundations behind algorithms, efficiency, and recursive problem solving, building on the logic and counting techniques developed in earlier courses. It introduces key ideas from number theory and shows how they naturally lead to efficient algorithms used throughout computer science. The course begins with modular arithmetic, divisibility, and greatest common divisors, leading to classic algorithms such as the Euclidean algorithm and its extended form. These concepts are then applied to practical problems in cryptography, including modular exponentiation, key exchange, and public-key encryption, illustrating how abstract mathematics enables secure communication. You will then study the analysis of algorithms, learning how to measure running time using asymptotic notation and compare algorithms based on their growth rates. The course emphasizes reasoning about performance rather than machine-dependent details. Finally, the course develops mathematical induction and recursion as powerful tools for defining, analyzing, and proving the correctness of algorithms. Topics include recursive definitions, recurrence relations, and structural induction, with classic examples such as Fibonacci numbers and recursive counting problems. By the end of the course, learners will be able to design recursive algorithms, analyze their efficiency, and understand the mathematical principles that make modern computation possible.
-
This course develops the mathematical tools needed to count, measure uncertainty, and reason about random processes, which are central to computer science, data analysis, and algorithm design. Building on the logical foundations from the first course, it introduces combinatorial counting techniques and probability theory through a discrete, computation-oriented lens. The course begins with the fundamentals of counting, including the product rule, sum rule, permutations, combinations, and binomial coefficients. You will learn how to count complex structures efficiently using techniques such as the principle of inclusion and exclusion, with applications ranging from algorithm analysis to data organization. The second half of the course focuses on probability, emphasizing its deep connection to counting. Topics include sample spaces, events, conditional probability, independence, and Bayes’ Theorem. You will also study random variables, probability distributions, expectation, and variance, gaining tools to model and analyze randomized algorithms and real-world uncertainty. Throughout the course, abstract concepts are reinforced with concrete examples drawn from computing, games of chance, and classic probability puzzles. By the end, learners will be able to systematically count possibilities, compute probabilities, and reason rigorously about randomness—skills essential for advanced study in algorithms, data science, machine learning, and beyond.
-
This course introduces the foundational concepts of discrete mathematics that are essential for computer science, with a focus on logic, formal reasoning, and set theory. Discrete mathematics studies structures that are non-continuous and symbolic, making it the natural mathematical language of computation. You will begin by learning propositional and predicate logic, developing the ability to translate natural-language statements into precise formal expressions. The course covers logical operators, equivalence, quantifiers, and rules of inference, providing the tools needed to construct and evaluate rigorous arguments and proofs. The course then introduces set theory and functions, which form the backbone of data modeling and abstraction in computer science. Topics include set operations, relations, functions, and cardinality, along with their close connections to logical reasoning. Emphasizing understanding and problem-solving over memorization, this course builds the mathematical maturity required for algorithm design, program correctness, and advanced topics in the specialization.
Taught by
Kenneth Wai-Ting Leung