This course is dedicated to sequence alignments, pairwise and multiple. We will start by introducing the alignment problem in an evolutionary context, explaining what the biological issues are and what are the models that have been designed to compare sequences in a biologically meaningful way. We will then look in details at the most common dynamic programming algorithm: Needleman and Wunsch. The second part of the course will be dedicated to multiple sequence alignments. We will introduce the context in which such a modeling is useful and will then develop the most common algorithms. All along the course we will insist on the main limitations of the available approaches.