Towards a Definition of an Algorithm
  We define an algorithm to be the set of programs that implement or express that algorithm. The set of all programs is partitioned into equivalence classes. Two programs are equivalent if they are essentially the same program. The set of equivalence classes forms the category of algorithms. Although the set of programs does not even form a category, the set of algorithms form a category with extra structure. The conditions we give that describe when two programs are essentially the same turn out to be coherence relations that enrich the category of algorithms with extra structure. Universal properties of the category of algorithms are proved. 
Noson S. Yanofsky