Functional programming is a programming paradigm which models computations (and thus programs) as the evaluation of mathematical functions. It has its roots in lambda calculus, which was developed by Alonzo Church in his research on computability.
Functional programming has some interesting concepts:
Some examples of functional programming languages are Lisp, Haskell, Scala and Clojure, but also other languages, like Python, R and Javascript allow to write (parts of) your programs in a functional style. Even in Java, functional programming has found its place with Lambda Expressions and the Stream API which were introduced in Java 8.