Build a better understanding of Functional programming and the tools needed to write Javascript programs with controlled side-effects. You will learn about the following concepts: * Currying and Partial Application * Function Composition (Process Chaining) * Monads - Maybe, Either, IO, Future * Design Patterns