205.1 Functional Programming

Lambda in the colors of the Scala logo (red)

---

Table of Contents

* [Lessons](#lessons) * [Lesson 1 - Evaluation](#lesson-1---evaluation) * [Lesson 2 - Higher order functions](#lesson-2---higher-order-functions) * [Lesson 3 - Data structures](#lesson-3---data-structures) * [Lesson 4 - Lists and pattern matching](#lesson-4---lists-and-pattern-matching) * [Lesson 5 - Advanced lists and High order functions](#lesson-5---advanced-lists-and-high-order-functions) * [Midterm preparation](#midterm-preparation) * [Midterm](#midterm) * [Lesson 6 - Tuples and comprehensions](#lesson-6---tuples-and-comprehensions) * [Lesson 7 - Advanced typing and infinite lists](#lesson-7---advanced-typing-and-infinite-lists) * [Lesson 8 - Futures and parallel collections](#lesson-8---futures-and-parallel-collections) * [Lesson 9 - DSLs](#lesson-9---dsls) * [Assignments](#assignments) * [Assignment 1 - Square root](#assignment-1---square-root) * [Assignment 2 - Map-reduce](#assignment-2---map-reduce) * [Assignment 3 - Binary tree](#assignment-3---binary-tree) * [Assignment 4 - Lists and pattern matching](#assignment-4---lists-and-pattern-matching) * [Assignment 5 - High-order functions on lists](#assignment-5---high-order-functions-on-lists) * [Assignment 6 - Sequence comprehension and tuples](#assignment-6---sequence-comprehension-and-tuples) * [Assignment 7 - Advanced typing and infinite lists](#assignment-7---advanced-typing-and-infinite-lists) * [Assignment 8 - Advanced typing and infinite lists](#assignment-8---advanced-typing-and-infinite-lists) * [Assignment 9 - DSLs](#assignment-9---dsls) --- ## Lessons ### Lesson 1 - Evaluation [Files](src/Lesson1) - Call by name / Call by value - State-less functions ### Lesson 2 - Higher order functions [Files](src/Lesson2) - Curryfication - Recursion - Tail recursion ### Lesson 3 - Data structures [Files](src/Lesson3) - Functional data structures - Binary tree - Operation precedence ### Lesson 4 - Lists and pattern matching [Files](src/Lesson4) - List - Pattern matching - Genericity ### Lesson 5 - Advanced lists and High order functions [Files](src/Lesson5) - Lists - High order functions ### Midterm preparation [Files](src/MidTermPrep1) ### Midterm [Files](src/MidTerm1) ### Lesson 6 - Tuples and comprehensions [Files](src/Lesson6) - Tuples - For-comprehension - Yield - Flatmap ### Lesson 7 - Advanced typing and infinite lists [Files](src/Lesson7) - Types - Bounds - Traits - Variance, covariance and contra-variance - Infinite sequences ### Lesson 8 - Futures and parallel collections [Files](src/Lesson8) - Futures - Actors - Parallel collections ### Lesson 9 - DSLs [Files](src/Lesson9) - DSL ## Assignments ### Assignment 1 - Square root [Files](src/Assignment1) - Recursion - Newton - Tail recursion ### Assignment 2 - Map-reduce [Files](src/Assignment2) - Fibonacci - Sum - Map-reduce ### Assignment 3 - Binary tree [Files](src/Assignment3) - Int set - Binary tree - Union / intersection / foreach ### Assignment 4 - Lists and pattern matching [Files](src/Assignment4) - Expression interpreter - Binary tree - List functions - Predicates (any / every) ### Assignment 5 - High-order functions on lists [Files](src/Assignment5) - High-order functions - Lists - Map - Fold - Zip ### Assignment 6 - Sequence comprehension and tuples [Files](src/Assignment6) - Tuples - `for` comprehension ### Assignment 7 - Advanced typing and infinite lists [Files](src/Assignment7) - Genericity - Infinite lazy lists ### Assignment 8 - Advanced typing and infinite lists [Files](src/Assignment8) - Parallel collections - Futures ### Assignment 9 - DSLs [Files](src/Assignment9) - DSL