Functional programming could easily be the topic of a whole course. In this course we so not have the time to dig deeper into the concepts but I want you to have a basic understanding of lambda-calculus and how it relates to the semantics of functional programming languages. You should also have a basic understanding of operational semantics and how we can use this to define a programing language.
As a way to achieve these goals what could be a better strategy than to see how Elixir matches to lambda-calculus, how we can define a small functional programming language and use the operational semantics as blue-print for an interpreter. If we then implement this interpreter in Elixir we will meet also the practical goals of the course.