Participants will gain an understanding of Functional Language features such as higher order functions, immutable state, closures, continuations, lazy evaluation, and internal iteration. They will learn to recognize opportunities to use these features in order to gain efficiency, reliability, reuse and scalability. Finally they will become familiar with existing language and library features that support a Functional style in popular languages (mostly Java with a little C++, Ruby and Python), as well as learn design patterns that further support a functional style.