This should reinforce the need for good documentation, as without it you can't reuse things, as well as provide opportunities to read other's code. It is not important that they know how to build each of these structures at this level. It is important to have experience working in a group. Changes are under consideration, but the language used at present is Pascal, as it has been for some years. Perhaps as a result, the courses contain little coverage of programming paradigms other than the imperative.
Language is an issue because an utterly poor choice stands in the way of understanding.