Functional Programming is an important programming paradigm based on lambda-calculus. It has been widely used by many finance and trading companies (e.g., Jane Street) as well as big IT companies (e.g., Google, Facebook). Different from the imperative programming paradigm based on Turing Machines to specify the exact operation in each step, functional programming performs computation through evaluation and composition of expressions. These differences of the underlying computation model lead to many unique features, including algebraic data types, pattern matching, high-order functions, etc., and such features may help developers solve certain computation problems more efficiently. This course will introduce the following core topics about the functional programming paradigm:
- Lambda Calculus
- Data types, such as tuples, lists, records, variants, and algebraic data types
- Pattern matching
- Function as the first-class citizen and high-order functions
- Recursive Function and Tail Recursion
- Modular programming
- Imperative programming inside functional programming
- Advanced functional data types, e.g., hash tables, trees, sequences, monads
- Typical algorithms in functional programming
- Real-world applications of functional programming