Algorithms are at the heart of every nontrivial computer application. Therefore every computer scientist and every professional programmer should know about the basic algorithmic toolbox: structures that allow efficient organization and retrieval of data, frequently used algorithms and basic techniques for modeling, understanding, and solving algorithmic problems.
This book is a concise introduction to this basic toolbox intended for students and professionals familiar with programming and basic mathematical language. I have used sections of the book for advanced undergraduate lectures on algorithmics and as the basis for a beginning graduate level algorithms course. I believe that a concise yet clear and simple presentation makes the material more accessible as long as it includes examples, pictures, informal explanations, exercises, and some linkage to the real world.
Algorithmics is a modern and active area of computer science, even at the level of the basic tool box. I made sure that I present algorithms in a modern way, including explicitly formulated invariants. I also discuss recent trends, such as algorithm engineering, memory hierarchies, algorithm libraries, and certifying algorithms.