Computer Programming and Algorithms