This document provides an introduction to functional programming. It begins by explaining that while programs with functions could be considered functional, functional programming specifically avoids mutable state and treats computation as mathematical function evaluation. It then contrasts imperative vs declarative programming and gives examples in different languages. Finally, it demonstrates how JavaScript supports some functional programming concepts like first-class functions and provides a short example of mapping a function over an array to summarize the key ideas of functional programming.