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
Leads to
Syllabus
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
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
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
Module 4
Immutable Data
- Persistent Lists
- Trees and Algebraic Data Types
- Structural Sharing
- Pattern Matching and Deconstruction
- Recursive Data Processing
Module 5
Abstraction and Generic Operations
- Data Abstraction Barriers
- Tagged Data and Generic Dispatch
- Type Classes and Protocols
- Polymorphic Functional Interfaces
- Equational Reasoning
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
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
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.