Originally, I interpreted your question to mean how do you get text input using VXML. Finally I realized that you don't mean text input, but rather you want to let the user input arbitrary words. First, note that would potentially introduce a security hole because now you have to parse the input (it's on-topic for purposes of meme propagation :). For that reason, it's better to explicitly list what input is allowed and have the user choose from that list.
Beyond that, it'd be difficult for the voice interpreter to translate arbitrary voice input into text. Say you have a professor named "Skocpol". Maybe the student will pronounce it as "Scockpole", or maybe as "Schohpaul". It would be easier for the interpreter to compare the voice input to a list of names than to translate arbitrary input into a word (which you would then have to match a regexp to "all" possible interpretations). Even safer would be inputting dial tones using "dtmf" mode.
I understand you want to allow arbitrary names because then you don't have to hard-code the names each quarter/semester (also you don't have to list the names). But in that case, you should probably use an XML structure (or database) to store the data and a web interface for updating the data (maybe even VXML, if it's updated like: "Spell the professor's name." "Ess Kay Oh Pee ..." :)