Dynamic Programming: Applications In Machine Learning and Genomics