In this lesson, I will show you a basic overview of functional programming. First, what is functional programming? Functional programming is a method of writing code where the data and the algorithms are separated. That is different from object oriented programming, where the data and the behaviors are brought together in objects and classes. The common language incorporates both functional programming and object oriented programming. The lines between FP and OOP can blur at times, but since Kotlin can handle both methods, then the compiler will be able to handle your preferred method and your coding style. Still, it is important to learn the difference because you will hear these terms. Functional programming uses small algorithms to do one part of a larger task. The small functions will execute in a step-by-step process, then another small algorithm will bring the subtasks together into what FP calls a composition, sort of like bringing a hammer, nails, and a carpenter together to build a house, but all the parts are separated. So, overall a program can be summed up as input, process, output. Both OOP and FP invokes all three, but functional programming separates input from process, and it separates them as very distinct things. A function gets and defines data, which is input in one area, then processes it with functional commands in a separate area, then it produces output. So, for example, say we want it to have a meal. The input data is our ingredients. The process of mixing the ingredients and cooking it is another function, and the output is our dinner. Ingredients, chef are separated, but they come together to make a meal. Functional programming clearly separates the chef's role from the role of the ingredients. FP allows the programmer to break up the task and the small blocks of code called a function. In Kotlin, this function is denoted as FUN. So, let's do some examples of functional programming using math equations. First, let's define our input data. I'll say var num1 = 100, then I'll have some more input data and I'll say VAR num2 = 200. This is our input data. Now, in a separate area, I'm going to define our process algorithm. I'll say VAR sum = num1+num2. This is our algorithm. Now, let's produce the output. I'll say println("$sum"). That's our functional program. Now, let's run it And we get 300. 100 plus 200 equals 300. We took our input, two numbers, added them together to produce our output. This is our simple functional program, three different areas, input, process, output. Here, in pure functional programming style, we separated and defined our data as input, then we processed it using mathematical algorithms and that produced our output, 300. So, that is an overview of functional programming. Thanks for watching. Stay tuned for the next lesson where we will learn about the contrast and concept of object oriented programming, so let's go check it out.