This book is intended to be an introductory bioinformatics textbook for mathematicians and computer scientists. It focuses on using algorithms and discrete mathematics to solve biological problems. The book systematically describes biological applications, the corresponding mathematical/computational problems, and various algorithmic solutions. It also discusses the practical use of various algorithmic methods and describes what algorithms should be used in different situations.