Understanding Sequence Alignment Algorithms: with Needleman-Wunsch