What is the best book for studying discrete mathematics?

As a programmer, mathematics is important basic knowledge to study some topics, especially Algorithms. Many websites, and my fellows suggest me to study Discrete Mathematics before going to Algorithms, so I want to know which Discrete Mathematics book is suitable for my needs?


Solution 1:

Concrete Mathematics: A Foundation for Computer Science, By Donald Knuth himself!

Book Cover

Solution 2:

Discrete Math knowledge is needed to become adept in proving the correctness and deriving the complexity of algorithms and data structures. You will be taught those in Algo/DS books, but you can only get the mathematical proficiency by practicing just discrete math.

Knuth book is very good for that. But IMHO, you will only need it if you for doing advanced proofs in DS/Algorithms.

For a beginner, it would be great to go over "Grimaldi" http://www.amazon.com/Discrete-Combinatorial-Mathematics-Applied-Introduction/dp/0201199122 and then quickly move to Algorithms.

Otherwise, you will continue going deep in Discrete Math and never get to Algorithms/DS.

Remember, Discrete Math does not teach you how to design algorithms or Data structures. That will come only by practicing Algorithm problems @ topcoder, acm icpc , spoj etc and reading books on Algos/DS or courses on those.

My 2 cents.