This document introduces functional programming with Scala. It defines functional programming as treating computation as the evaluation of mathematical functions while avoiding state and mutable data. It then discusses Scala, describing it as a modern multi-paradigm language that integrates object-oriented and functional features. The document outlines key aspects of functional programming in Scala like defining functions as values, using expressions instead of statements, function types, the Scala REPL, core collections, and functional operations like map, filter and reduce.