On your first item, are you sure you don't mean procedural
programming (the use of subs, modules, while loops, etc.)? Functional
programming is really strange and doesn't find its way into normal development, and is best left to the mathematicians.
Update: Dictionary.com handily accesses the Free On-line Dictionary of Computing. To summarize, functional languages are based on Typed Lambda Calculus, have no side effects, and examples include a subset of Lisp, Haskell, and Backus' FP Systems, which I used in my Masters studies at UTD. In that link, the author explains how functional programming is "very different" from procedural programming.