This highly structured text provides comprehensive coverage of design techniques of algorithms. It traces the complete development of various algorithms in a stepwise approach followed by their pseudo-codes to build an understanding of their application in practice. With clear explanations, the book analyzes different kinds of algorithms such as distance-based network algorithms, search algorithms, sorting algorithms, probabilistic algorithms, and single as well as parallel processor scheduling algorithms. Besides, it discusses the importance of heuristics, benchmarking of algorithms, cryptography, and dynamic programming cryptography, and dynamic programming.