Functional programming has been apart of computer science pretty much since the beginning with Lisp, invented in 1958, being the first major language using its techniques. Functional programming eschews mutating variables and espouses pure functions. Things which are very hard to do right in OOP, like compose-ability are trivial in FP.
Please come and check out my talk and be sure to check your interest so that we can get the proper size room. For those who have never been, UCSD is in the amazingly beautiful La Jolla area of San Diego. It is very close to the ocean, shops and restaurants. Code Camp is a perfect excuse for a weekend vacation. Who knows maybe you can get your company to pay for a hotel room since there is no cost for the training.
To rate this talk: http://spkr8.com/t/59461
Here is the full talk description:
Functional languages like Lisp, Scheme, Clojure, and Haskell espouse the beauty of pure functions. What are pure functions? Functions which always produce the same output when given the same input without mutating any variables along the way. This also makes it trivially easy to compose new functions by combining older ones, while in imperative languages, creating compose-able objects can be rocket science hard. The difference between functional and imperative programming can be described as the difference between telling the computer what to do (functional) and how to do it (imperative).