in reply to use mode quotewords; # someone write it

The first question that springs to mind is why you can't just read this out of a file, the syntax of which you could define so easily. Then there's no requirement for all the qw-stuff.

Secondly, since you can read it in from a file so easily, you could just as easily read it in from a here document using the same parser.

Or, if you're feeling energetic, you can "cheat" by feeding a list to a function which returns a hash (ref?):
%p = fix qw [ cs_req => basic_cs math_req basic_cs => intro_rec comp_org adv_prog intro_req => intro_cs introI introII ];
Converting from this list to a hash is a quick sub that uses map, perhaps. It's probably even Golf-able.