This document provides an introduction to genetic algorithms and genetic programming. It discusses how genetic algorithms are inspired by natural selection and genetics, using operations like crossover and mutation to evolve solutions to problems. It also outlines the basic steps of a genetic programming framework, including generating an initial population randomly, evaluating fitness, selecting parents, performing crossover and mutation to create offspring, and iterating until a solution is found. Representation using syntax trees and example genetic operators like single point crossover are described.