Simon Grays consistent and coherent approach to data structures teaches students to focus on software design and testing as they learn to develop high-quality software programs. He introduces each collection as an abstract data type and then guides students through a design process. This effective model illustrates that construction of high-quality software requires careful planning. With Grays methodology, students become independent problem solvers by repeated practice planning, creating, testing, implementing, and then analyzing their work. Students also gain experience using an industry-standard library, while developing an understanding of what goes into creating such a library.