Functional Programming is style of crafting software where functions are the fundamental building blocks. Among other features, this allows programmers to create simpler software for complex problems.

Individual languages can either help or hinder this style of programming. The extremes swing from "Purely Functional" to "Imperative". Most functional programming languages have some imperative facilities and vice-versa.

Functional Programming Concepts

The Functional Thinking (video) presentation is a good start, although it assumes knowledge of Java semi-technical audiences can fully appreciate the the rationale and flexibility of functional programming.

"Expert F# 4.0" (book) Don Syme, the creator of F# gives you expert advice and know how in F#

Clojure

"The Little Schemer" (book) hand-downs this book is probably the best way to think in lisp. Part of the brilliance is that it ''assumes you know nothing more than English''. Clojure support is compliments of Emanon's Clojure Examples.

Programming Clojure (book) by Halloway and Bedra is a great all around book that assumes you know little and can get you productive quickly.