Computer Science – Essential Discrete Mathematics Topics for Students

computer sciencemath

I know that Discrete Mathematics is a pretty broad topic that's used in a number of fields but I was just wondering what are some of the topics from it that you would expect an average computer science student to know?

Here are the range of topics from the table of contents of a book titled "Discrete Mathematics and it's Applications 6th edition" by Kenneth H Rosen:

1 The Foundations: Logic and Proofs
    1.1 Propositional Logic 
    1.2 Propositional Equivalences 
    1.3 Predicates and Quantifiers 
    1.4 Nested Quantifiers 
    1.5 Rules of Inference 
    1.6 Introduction to Proofs 
    1.7 Proof Methods and Strategy 
2 Basic Structures: Sets, Functions, Sequences and Sums 
    2.1 Sets 
    2.2 Set Operations 
    2.3 Functions 
    2.4 Sequences and Summations 
3 The Fundamentals: Algorithms, the Integers, and Matrices 
    3.1 Algorithms 
    3.2 The Growth of Functions 
    3.3 Complexity of Algorithms 
    3.4 The Integers and Division 
    3.5 Primes and Greatest Common Divisors 
    3.6 Integers and Algorithms 
    3.7 Applications of Number Theory 
    3.8 Matrices 
4 Induction and Recursion 
    4.1 Mathematical Induction 
    4.2 Strong Induction and Well-Ordering 
    4.3 Recursive Definitions and Structural Induction 
    4.4 Recursive Algorithms 
    4.5 Program Correctness 
5 Counting 
    5.1 The Basics of Counting 
    5.2 The Pigeonhole Principle 
    5.3 Permutations and Combinations 
    5.4 Binomial Coefficients 
    5.5 Generalized Permutations and Combinations 
    5.6 Generating Permutations and Combinations 
6 Discrete Probability 
    6.1 An Introduction to Discrete Probability 
    6.2 Probability Theory 
    6.3 Bayes Theorem 
    6.4 Expected Value and Variance 
7 Advanced Counting Techniques 
    7.1 Recurrence Relations 
    7.2 Solving Linear Recurrence Relations 
    7.3 Divide-and-Conquer Algorithms and Recurrence Relations 
    7.4 Generating Functions 
    7.5 Inclusion-Exclusion 
    7.6 Applications of Inclusion-Exclusion 
8 Relations 
    8.1 Relations and Their Properties 
    8.2 n-ary Relations and Their Applications 
    8.3 Representing Relations 
    8.4 Closures of Relations 
    8.5 Equivalence Relations 
    8.6 Partial Orderings 
9 Graphs 
    9.1 Graphs and Graph Models 
    9.2 Graph Terminology and Special Types of Graphs 
    9.3 Representing Graphs and Graph Isomorphism 
    9.4 Connectivity 
    9.5 Euler and Hamilton Paths 
    9.6 Shortest-Path Problems 
    9.7 Planar Graphs 
    9.8 Graph Coloring 
10 Trees 
    10.1 Introduction to Trees 
    10.2 Applications of Trees 
    10.3 Tree Traversal 
    10.4 Spanning Trees 
    10.5 Minimum Spanning Trees 
11 Boolean Algebra 
    11.1Boolean Functions 
    11.2 Representing Boolean Functions 
    11.3 Logic Gates 
    11.4 Minimization of Circuits 
12 Modeling Computation 
    12.1 Languages and Grammars 
    12.2 Finite-State Machines with Output 
    12.3 Finite-State Machines with No Output 
    12.4 Language Recognition 
    12.5 Turing Machines 
Appendixes 
    A.1 Axioms for the Real Numbers and the Positive Integers 
    A.2 Exponential and Logarithmic Functions 
    A.3 Pseudocode

Best Answer

Concrete Mathematics: A foundation for Computer Science, by Knuth e.a. was written exactly for this purpose.

It provides mathematical knowledge and skills for computer science, especially for the analysis of algorithms. According to the preface, the topics in Concrete Mathematics are "a blend of CONtinuous and disCRETE mathematics."

Wikipedia, 27 July 2012