Mathematical programming is a generic term for the study of optimization problems, the development and implementation of algorithms to solve these problems, and the application of these algorithms to real world problems. The expression "programming" actually predates computers and does not refer to computer programming. Nevertheless, most effective optimization techniques now require computers. There are dozens of optimization techniques that are considered a part of mathematical programming including genetic algorithms and simulated annealing.