Course


IERG4120/ESTR4328 – Functional Programming

IERG Elective MIEG Elective Undergraduate
Co-requisite(s):
Unit(s):
3
Pre-requisite(s):
IERG2080 or ESTR2306 or equivalent, or with instructor’s written approval
Exclusion:
ESTR4328
Term Offered:
Term 2
Teacher:
Prof. Kehuan Zhang
Remarks:

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:

  1. Lambda Calculus
  2. Data types, such as tuples, lists, records, variants, and algebraic data types
  3. Pattern matching
  4. Function as the first-class citizen and high-order functions
  5. Recursive Function and Tail Recursion
  6. Modular programming
  7. Imperative programming inside functional programming
  8. Advanced functional data types, e.g., hash tables, trees, sequences, monads
  9. Typical algorithms in functional programming
  10. Real-world applications of functional programming