CS205

Functional Programming

A different way to compute: pure functions, immutability, and higher-order functions — the ideas behind SICP and modern functional languages.

8 modules · 40 lessons · Practice after every lesson

Syllabus

  1. Module 1

    Functional Evaluation

    • Expressions and Referential Transparency
    • Pure Functions and Side Effects
    • Substitution Models of Evaluation
    • Recursive Process and Recursive Procedure
    • Tail Calls and Iterative Processes
  2. Module 2

    Higher-Order Functions

    • Functions as Values
    • Map, Filter, and Fold
    • Function Composition and Pipelines
    • Currying and Partial Application
    • Anonymous Functions and Point-Free Style
  3. Module 3

    Lexical Scope and Closures

    • Environments and Lexical Binding
    • Closures as Functions with State
    • Encapsulation Through Closures
    • Dynamic Versus Lexical Scope
    • Continuation-Passing Style: An Introduction
  4. Module 4

    Immutable Data

    • Persistent Lists
    • Trees and Algebraic Data Types
    • Structural Sharing
    • Pattern Matching and Deconstruction
    • Recursive Data Processing
  5. Module 5

    Abstraction and Generic Operations

    • Data Abstraction Barriers
    • Tagged Data and Generic Dispatch
    • Type Classes and Protocols
    • Polymorphic Functional Interfaces
    • Equational Reasoning
  6. Module 6

    Lazy Evaluation and Streams

    • Eager and Lazy Evaluation
    • Thunks and Delayed Computation
    • Infinite Streams
    • Memoization and Sharing
    • Controlling Space Use in Lazy Programs
  7. Module 7

    Effects and Functional Architecture

    • Modeling Errors with Result Types
    • Optional Values and Total Functions
    • State Passing
    • Monads as Effect Composition
    • Functional I/O and Program Boundaries
  8. Module 8

    Functional Programming at Scale

    • Functional Modules and Interfaces
    • Property-Based Testing
    • Parallelism with Immutable Data
    • Functional Reactive Programming
    • Choosing Functional and Imperative Techniques

Start Functional Programming.

No setup, nothing to install. Try the first lessons before you sign up.