Heuristics & Algorithms
Two senses of "algorithm"
1. A purely mechanical logical sequence of steps.
2. A general purpose procedure

A heuristic is a rule which is sometimes useful.
A heuristic is [2] but not [1].
[1] always delivers an answer.
A heuristic may not.
Penrose fails to make the appropriate distinction between heuristics and algorithms. There are two senses of the word "algorithm".
The first sense is as a purely mechanical logical sequence of steps. Examples of such a sense of algorithm would be the algorithms found in mathematics such as Euclid's algorithm for finding the common divisor of two numbers, or the algorithm for doing long division.
The second sense of an algorithm comes from computer science and is the notion of a general purpose procedure. Thus any computer program, however simple or complex, is an algorithm, in this sense.
A heuristic is a rule which may sometimes be useful, but is not always. Polya popularised this term in his book "How to solve it", and it is widespread in AI for non-logical reasoning. A heuristic is an algorithm in sense [2], but not in sense [1]. An algorithm in sense [1] always delivers a result, but a heuristic may not.