Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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
share|improve this question
    
I should mention that I am a student but I'm not trying to cut any corners. I took a discrete math class years ago before my college changed it to be more specialized in Computer Science. Now that I'm going back for my MS in CS I'd like to relearn what I should know myself. I also would like to take a Data Structures and Algorithms course that has Discrete Mathematics as it's prerequisite. –  Ein Doofus Aug 9 '12 at 9:33
1  
As a student you should know all of it. ;-) Oddly enough the curriculum I had was "Data Structures and Algorithms" course before "Discrete Mathematics". –  Spoike Aug 9 '12 at 9:43
1  
It depends on your definition of an average cs student :) –  Goran Jovic Aug 9 '12 at 9:56
2  
It would be helpful for a student to know all of this stuff. For the average junior programmer working on maintaining and enhancing typical corporate CRUD and reporting apps, they won't using these concepts much, if at all. –  jfrankcarr Aug 9 '12 at 11:14
2  
why on earth would anyone want to be an average student, you should strive to be better than that ;) –  jk. Aug 9 '12 at 12:45

3 Answers 3

up vote 4 down vote accepted

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

share|improve this answer
3  
I'm wondering, have you read the book? –  phant0m Aug 9 '12 at 18:55
    
Good point - no, I haven't read the book, but I read some positive recommendations when it came out. Good enough to remember it when I saw this question. I did not realise the book is that old. Apparently I was still in college when it was first published. –  Henk Langeveld Aug 9 '12 at 19:29
1  
I have the book on my shelf, and the thing is, it's very unlike the other discrete maths books. The book is "beautiful", but it doesn't talk about boolean algebra, propositional logic, relations, set theory, graphs, trees, basic group theory etc. I'm not sure how approachable the book is without a "decent" maths background. The book focuses very much upon actually calculating things. I just don't think it's the book to recommend when trying to learn about discrete mathematics, because the subject matter is very narrow and focuses too much on the concrete (pun intended) instead of the abstract. –  phant0m Aug 13 '12 at 11:14
1  
@Ein Doofus I had originally bought the book as a companion to my discrete maths lecture, but I found myself not looking at the book too often, because it was too far away from the lecture rather involved. Now, I really like reading up a chapter here and there, but our discrete maths course was much closer to the table of contents provided by the OP. –  phant0m Aug 13 '12 at 11:15

Mathematics For Computer Science by Eric Lehman and Tom Leighton is another book that deals with this kind of stuff, although I think an average CS student doesn't know everything from that book.

It's an overview of mathematics needed for CS, written for CS students... Which is, in a way, exactly what you're looking for. I still haven't read it, I just skimmed through it, but it was recommended specifically for that purpose (having all the math you need at CS student level in one place) in an online Stanford course on design and analysis of algorithms.

share|improve this answer

All of the descrete maths and do not stop at that. You cannot have enough maths skills in computing. Discrete maths is great for understanding computer specific problems but if you are into programming then chances are you might be tasked with designing or working on software with heavy maths on the requirements. Anyway, it's really, really, good for you - like porridge :)

share|improve this answer
    
+1 Everything on the list in the question is important for computer science, most of the stuff is useful for software development, too. –  user281377 Aug 10 '12 at 10:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.