Cooperative coevolution has proven to be a promising technique for solving complex combinatorial optimization problems. In this paper, we present four different strategies which involve cooperative coevolution of a genetic program and of a population of constants evolved by a genetic algorithm. The genetic program evolves expressions that solve a problem, while the genetic algorithm provides "good" values for the numeric terminal symbols used by those expressions. Experiments have been performed on three symbolic regression problems and on a "real-world" biomedical application. Results are encouraging and confirm that our coevolutionary algorithms can be used effectively in different domains. Categories and Subject Descriptors I.2 [Artificial Intelligence]: Automatic Programming General Terms Algorithms Keywords Coevolution, Genetic Algorithms, Genetic Programming