AlphaPerfect / teaching-fp

Techniques, advice, and anecdotes about how to teach Functional Programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Teaching Functional Programming

These are currently my working notes on how to best teach FP

I am by no means an expert in teaching this material! However, most current materials are "okay" at best. There seems to be an increase in people interested in FP, but many get scared off at the word "functor" or unfamiliar syntax (ie: not from the C-family).

Goal

  1. Don't scare off newcomers
  2. Help popularize FP by helping people teach effectively

Strategy

  • Keep it practical
  • Use a flexible language (Racket) so that you don't need to switch syntax for different concepts
  • Progressive
    • Start similar to the student's background (ex. compare to Java)
  • Less magic is literally demystifying
    • Reimplement common patterns to show how things work
      • map, fold (left and right), scan and filter from scratch
    • Compare to imperative language strategy
      • Loops vs recursion

Contributing

  1. Fork the repo
  2. Write your post
  3. Submit a pull request

Have Suggestions?

Submit an issue!

Emoji tags for commits, PRs and comments

Meaning Symbol Markdown
Idea πŸ’‘ :bulb:
Approval πŸ‘ :+1:
Improving code format/structure 🎨 :art:
Writing docs πŸ“ :memo:
Bug Fix πŸ› :bug:
Removing code or files πŸ”₯ :fire:
Fixing CI build πŸ’š :green_heart:
Adding tests βœ… :white_check_mark:
Upgrading dependencies ⬆️ :arrow_up:
Downgrading dependencies ⬇️ :arrow_down:
Fix linter warning or typo πŸ‘• :shirt:

About

Techniques, advice, and anecdotes about how to teach Functional Programming

License:MIT License