Algorithms and Models of Computation