I already have knowledge about basic algorithms. Now I plan to study more advance algorithms and I decide to go with Introduction to Algorithms.

I'm not sure, do I need to refresh my math's skill before read this book or not? (I forget almost math that I learn in high school and college) If this book need strong math knowledge, please suggest subjects that benefit.

I want to learn about implementation, design and analysis of algorithms.

closed as off-topic by durron597, amon, user40980, Ixrec, GlenH7 Aug 16 '15 at 17:59

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic here. They are only meaningful to the asker and do not generate lasting value for the broader community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – amon, Community, Ixrec, GlenH7
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    Here is a great resource to refresh your skills if you choose you need to. khanacademy.org – Alan B. Dee Jul 18 '11 at 22:51

The MIT course that uses the CLR book has a specific prerequisite course. The textbook used by that prerequisite course is available for free.

Here it is:


The prerequisite course's prerequisite course is single-variable calculus.


As @user16764 alludes to in reference to the particular MIT course offerings (6.042), a version of what is normally called discrete mathematics, combined with first-year (university) level calculus are the primary requirements to understanding many (basic) algorithms and their analysis.

Specialized or advanced algorithms can require additional or advanced mathematical background, such as in statistics / probability (scientific and financial programming), abstract algebra, and number theory (i.e. for cryptography).

As a student my discrete mathematics course had the textbook Discrete Mathematics with Applications by Susanna Epp, and another textbook I found in my library was Discrete Mathematics by Kenneth Ross and Charles Wright. A decent quality used copy of one of these is likely a reasonable place to start (with or without combining with the MIT Open Course Ware, depending on your learning style). For self-study I often find having two sources to refer to can help clarify points I'm having trouble understanding.

An alternative I've seen suggested is Concrete Mathematics, Second edition by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. I cannot find my copy at the moment, and have not worked through it diligently so I cannot make a recommendation for or against it.

From the Preface:

But what exactly is Concrete Mathematics? It is a blend of continuous and discrete mathematics. More concretely, it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems.

I'll note the curmudgeon comments of Bill the Lizard in this blog entry "Books Programmers Don't Really Read". Personally I still find Robert Sedgewick's Algorithms (now 4th ed.) less intimidating and more approachable.

In regards to the continuous (i.e. Real numbers) part of mathematics, Calculus by Stewart seems to be a frequently used tome for lecturing to students on the enlightenment that comes from differentiation and integration.


It's not really so much math per se, as it is comfort and fluency with the mathematical formalism. Learn basic set terminology and the corresponding formalism.

The analysis of algorithms, especially in the context of complexity theory in which you study the underlying computational problem (if you're attempting to do something more substantial than "Big-Oh" notation), does require a significant investment in time into graph theory and abstract algebra, all in addition to a huge dose of innate cleverness.


I believe you're good to go unless you are concerned about the "Analysis" of Algorithms, not just their implementation. That us course is usually and UD math or CS course in most college curriculum.

Just understanding how to implement the algorithms in that book shouldn't be a problem

  • I want to learn about analysis of algorithms too. Please give me suggestions. :) – Anonymous Jul 18 '11 at 16:11
  • @Anonymous In that case I think there is no choice but to bite the bullet. I started teaching myself discrete math, but soon got overwhelmed and quit, tried the easy way out by doing "popular" books on data structures and algorithms, only to find that the real deal was missing. I'm now mustering the courage to begin again. – dotslash Mar 14 '14 at 15:52

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