Algorithm Design introduces algorithms by looking at the real-world problems that motivate them. The book teaches students a range of design and analysis techniques for problems that arise in computing applications. The text encourages an understanding of the algorithm design process and an appreciation of the role of algorithms in the broader field of computer science.Focus on problem analysis and design techniques. Discussion is grounded in concrete problems and examples rather than abstract presentation of principles, with representative problems woven throughout the text. Over 200 well crafted problems with several coming from companies such as Yahoo!® and Oracle®. Each problem has been class tested for usefulness and accuracy in the authors' own undergraduate algorithms courses. Broad coverage of algorithms for dealing with NP-hard problems and the application of randomization, increasingly important topics in algorithms.