Algorithms on Strings, Trees, and Sequences: Core String Edits, Alignments, and Dynamic Programming