I217E: Functional Programming
This course aims at studying functional programming. Functional programming is a programming style that uses no side effects such as variable assignments. In contrast to C and Java, loops, arrays, and referential types are not used in programs. Instead, we employ recursion and pattern matching. As resulting programs can be treated as functions in the mathematical sense, program analysis directly benefits from mathematical reasoning.