We covered functional dependencies (in the same level of detail that's provided in the OP's link) in the first half of my undergraduate databases course at UIUC last year. It was painful to say the least.
blueatlas cited the bit on functional dependencies as "an example of what drives many students out of CS" but I'd say that more than anything it's an example of a tricky topic that ought to be presented by a highly engaging, smart instructor instead of a boring one who may or may not understand the material very well. (in retrospect, my feelings and his aren't mutually exclusive)