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 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.

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

share|improve this 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

4 Answers 4

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:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/readings/

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

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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

share|improve this answer
    
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 at 15:52

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.