" 
 ::::::Um.  Agree that it needs to be sourced.  But a definition of algorithm that doesn't allow for I/O is seriously broken. 
 ::::::The problem with referring to an algorithm as ""something that runs on a Turing machine"" is that it focuses too much attention on the details of TMs, which are beside the point.  It's really programs that run on Turing machines, not algorithms.  An algorithm is supposed to be a higher level of abstraction — you can change details of the program, without changing the algorithm it implements.   "