This book is about algorithms. The goal of the book is to review some important classes of algorithms (Backtracking, Recursion, Divide andconquer, Greedy). We call these classes algorithm design paradigms. The book has been written having in mind the educational process. Once having understood a method of solving a class of problems, the student must move on to the writing of the algorithm. This must not be solved from memory, but on the contrary, the student himself must think how the algorithm should be implemented. The student must write what conditions or restrictions customize one general algorithm, in order to adapt it to a particular problem or to find a solution.