1. Beta reduction
2. Substitution; using alpha-conversion and other strategies
-3. Conversion versus Reduction
+3. Conversion versus reduction
4. Eta reduction and "extensionality"
5. Different evaluation strategies (call by name, call by value, etc.)
6. Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
+6. Lambda calculus compared to combinatorial logic
7. Encoding pairs (and triples and ...)
8. Encoding booleans
13. Representing lists as folds
14. Typical higher-order functions: map, filter, fold
-15. Recursion exploiting the fold-like representation of numbers and lists (deforestation, zippers)
+15. Recursion exploiting the fold-like representation of numbers and lists ([deforestation](http://en.wikipedia.org/wiki/Deforestation_%28computer_science%29), [zippers](http://en.wikipedia.org/wiki/Zipper_%28data_structure%29))
16. General recursion using omega
17. The Y combinator(s); more on evaluation strategies
## Side-effects and mutation ##
1. What difference imperativity makes
-2. Monads we've already seen, and the "monadic laws" (computer science version)
+2. Monads we've already seen, and the "monadic laws" [computer science version: Wadler](http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf)
3. Side-effects in a purely functional setting, via monads
4. The basis of monads in category theory
5. Other interesting monads: reader monad, continuation monad