Well, pulling open the book from that course I took, they give four categories: Imperative, Functional, Logic, and Object Oriented. I know my professor threw in Generic because of she was aware of developments in that category outside of C++'s templating system. I also know of a supplemental category, Aspect Oriented Programming, which is just recently being researched.
I find that the easiest way to get the sense of a programming category is to list examples of which languages fall where:
Object Oriented: Smalltalk
Functional: LISP, APL, ML, Haskell
Logic: Prolog
Imperative: C