This document provides an introduction to functional programming and Scala. It discusses key concepts of functional programming like immutable data, recursion, and higher order functions. It also outlines some pros like improved parallelization and modularity, and cons like a steeper learning curve. Finally, it introduces Scala as a functional language for the JVM that combines OOP and FP, and Akka as a library for building distributed and concurrent applications in Scala using an actor model.