A computer program (or set of programs) which is designed to systematically solve a certain kind of problem.