Dynamic Programming In Computer Science