abstract = "The language in which evolving programs are expressed
can have significant impacts on the problem-solving
capabilities of a genetic programming system. These
impacts stem both from the absolute computational power
of the languages that are used, as elucidated by formal
language theory, and from the ease with which various
computational structures can be produced by random code
generation and by the action of genetic operators.
Highly expressive languages can facilitate the
evolution of programs for any computable function
using, when appropriate, multiple data types, evolved
subroutines, evolved control structures, evolved data
structures, and evolved modular program and data
architectures. In some cases expressive languages can
even support the evolution of programs that express
methods for their own reproduction and variation (and
hence for the evolution of their offspring). This
tutorial will begin with a comparative survey of
approaches to the evolution of programs in expressive
programming languages ranging from machine code to
graphical and grammatical representations. Within this
context it will then provide a detailed introduction to
the Push programming language, which was designed
specifically for expressiveness and specifically for
use in genetic programming systems. Push programs are
syntactically unconstrained but can nonetheless make
use of multiple data types and express arbitrary
control structures, supporting the evolution of
complex, modular programs in a particularly simple and
flexible way. The Push language will be described and
ten years of Push-based research, including the
production of human-competitive results, will be
briefly surveyed. The tutorial will conclude with a
discussion of recent enhancements to Push that are
intended to support the evolution of complex and robust
software systems.",
notes = "Also known as \cite{2330926} Distributed at
GECCO-2012.