I currently am teaching high-level grammar classes in the program where I work, and the one thing I notice most is that students lack so much vocabulary that they end up using high-level gramamar structures with only beginning-level vocabulary. In other words, they can order a hamburger from McDonalds just fine, but they can hold a conversation on basic environmental issues like recycling. Again, this is supposed to be a high-level class.
Two reasons (of several) that lead to this problem are that (1) students spend most of their day engaging in everyday conversation topics or activities like shopping, ordering at a restaurant, or riding a bus (They don't has their roommates about socio-political events over breakfast, which might not be natural anyway), and (2) students tend to learn a word here and there with no real vocabulary study method in mind.
For my students, I try to help them learn words basic on topic----words that are directly related to a common theme and that can be easily used with the grammar structures we are learning in class. So, if we are learning about adjective clauses (e.g., "I like people who are . . . ."), I would teach them positive and negative personality traits that could be used with the structure (here's a very short list):
As students have learned vocabulary in such a way, they seem to be able to express clearly their ideas at a higher, more fluent, level.
So, do you have other ideas for building vocabulary?