""Analysis and Design of Algorithms" provides a structured view of algorithm design techniques in a concise, easy-to-read manner. The book was written with an express purpose of being easy -- to understand, read, and carry. The book begins with a clear explanation of the basics--what algorithms are, their practical applications, asymptotic notation, and data structures. The second section covers the algorithmic design techniques of divide and conquer, greedy, dynamic programming, branch and bound, and graph traversal. For each of these techniques, the book presents templates and guidelines on when to use and not to use each technique. The third major section of the book covers NP-completeness and the inherent hardness of problems. Using the material provided in this book, students and professionals can master the processes to use in solving the most difficult algorithmic problems. Users can explore various techniques, and learn to decide which algorithm design technique to use for a given problem. Many sections contain innovative mnemonics to aid the students in remembering the templates and key takeaways. Written with input from students and professionals, "Analysis and Design of Algorithms" is well suited for introductory algorithm courses at the undergraduate and graduate levels. The structured organization of the text makes it especially appropriate for online/distance learning. Amrinder Arora received his masters and doctorate in computer science from George Washington University, where he serves as an adjunct faculty member in the computer science department. Dr. Arora has held numerous executive positions at technology companies and has presented his research work at conferences throughout the United States, as well as internationally. He is a leading industry expert in data analytics and business intelligence."