structures though we expend fair number of pages in this book talking about efficiencythe goal is not to make you expert in designing efficient programs there are many long books (and even some good long booksdevoted exclusively to that topic in we introduced some of the basic concepts underlying complexity analysis in this we use those concepts to look at the complexity of few classic algorithms the goal of this is to help you develop some general intuitions about how to approach questions of efficiency by the time you get through this you should understand why some programs complete in the blink of an eyewhy some need to run overnightand why some wouldn' complete in your lifetime the first algorithms we looked at in this book were based on brute-force exhaustive enumeration we argued that modern computers are so fast that it is often the case that employing clever algorithms is waste of time program something that is simple and obviously correctand let it rip we then looked at some problems ( finding an approximation to the roots of polynomialwhere the search space was too large to make brute force practical this led us to consider more efficient algorithms such as bisection search and newton-raphson the major point was that the key to efficiency is good algorithmnot clever coding tricks in the sciences (physicallifeand social)programmers often start by quickly coding up simple algorithm to test the plausibility of hypothesis about data setand then run it on small amount of data if this yields encouraging resultsthe hard work of producing an implementation that can be run (perhaps over and over againon large data sets begins such implementations need to be based on efficient algorithms efficient algorithms are hard to invent successful professional computer scientists might invent maybe one algorithm during their whole career--if they are lucky most of us never invent novel algorithm what we do instead is learn to reduce the most complex aspects of the problems with which we are faced to previously solved problems more specificallywe develop an understanding of the inherent complexity of the problem with which we are facedthink about how to break that problem up into subproblemsand relate those subproblems to other problems for which efficient algorithms already exist introduction to algorithmsby cormenleisersonrivestand steinis an excellent source for those of you not intimidated by fair amount of mathematics