1. To develop a universal programming language.
  2. To define a theory of equivalence of computation processes. This would be
    the basis for a theory of equivalence preserving transformations.
  3. To represent algorithms by symbolic expressions in such a way that significant
    changes in the behavior represented by the algorithms are represented by
    simple changes in the symbolic expressions.
  4. To represent computers as well as computations in a formalism that permits
    a treatment of the relation between a computation and the computer that
    carries out the computation.
  5. To give a quantitative theory of computation. For example to find a quantitative
    measure of the size of a computation analogous to Shannon’s measure
    of information

(Referencing a paper by McCarthy, quoted from a summary here)