The challenge is that the course comes early in the career of a novice who may still be learining programming style and practice. Therefore it is not sufficient that the student merely examine existing libraries of code. Students often learn best when they build themselves. One way to achieve this is to have students build data structures and write algorithms that have the same flavor, if less sophistication, of the standard libraries of the language used. For example, in C++, students can build things with the flavor of the STL, though with much less sophistication and interconnection. This means that students will separate data structures from the algorithms that manipulate them, connecting them with iterators as is done in the stl. In Java, a different set of concepts will probably be needed, given the state of the developing standard libraries in the Java world.
Once students have built such artifacts, they can then be introduced to the standard libraries and can be asked to do projects using the real libraries. Their experience in building and analyzing simpler things can help them become familiar with professional practice.
The instructor can use a variety of tools to aid the student in this. One valuable tool here is elementary design patterns, which can be used to introduce students to best practice in the use of data structures and the interaction with algorithms. Again, using C++ as an example, the Iterator Pattern would be fundamental.