The second course in the standard Computer Science curriculum (CS 2) is often based on a theoretical study of data structures without an integrating practical component. As this course migrates to an object-oriented approach, students and instructors must be given materials to support a unified and application-oriented course. We propose to develop learning modules that support an application oriented, apprenticeship learning approach to the CS 2 course. Each module supports a methodology that is inverted from the traditional "learn a data structure and use it in a program" approach. Rather than studying data structures to use in applications, we propose to use applications to study data structures. Each module supports an apprentice style of learning wherein students read and modify implementations of data structures and application programs before writing them from scratch. Modules supply code libraries and frameworks, explanatory material for students and instructors, and potential programming, lab, and homework exercises. Each module supplies a situated learning experience that engages students from the outset by providing practical and illuminating examples for how and why data structures are used. Applications are interdisciplinary in nature, graphical where appropriate, and integrate several data structures into real-world programs. Modules will be developed to support object-oriented (using C++) design and programs, but each module will be developed as an Abstract Data Type (using C) to reach as wide an audience as possible. Three institutions are collaborating in this proposal: a research and teaching oriented private university, a teaching oriented public university, and a teaching oriented historically black university, ensuring that material will be accessible to a wide audience. The modules developed will be made available electronically, as hyper-text documents, and as published material to supplement traditional texts.