the standard second course in computer science has traditionally covered the fundamental data structures and algorithmsbut more recently these topics have been included in the broader topic of abstract data types this book is no exceptionwith the main focus on the designuseand implementation of abstract data types the importance of designing and using abstract data types for easier modular programming is emphasized throughout the text the traditional data structures are also presented throughout the text in terms of implementing the various abstract data types multiple implementations using different data structures are used throughout the text to reinforce the abstraction concept common algorithms are also presented throughout the text as appropriate to provide complete coverage of the typical data structures course overview the typical data structures coursewhich introduces collection of fundamental data structures and algorithmscan be taught using any of the different programming languages available today in recent yearsmore colleges have begun to adopt the python language for introducing students to programming and problem solving python provides several benefits over other languages such as +and javathe most important of which is that python has simple syntax that is easier to learn this book expands upon that use of python by providing python-centric text for the data structures course the clean syntax and powerful features of the language are used throughoutbut the underlying mechanisms of these features are fully explored not only to expose the "magicbut also to study their overall efficiency for number of yearsmany data structures textbooks have been written to serve dual role of introducing data structures and providing an in-depth study of object-oriented programming (oopin some instancesthis dual role may compromise the original purpose of the data structures course by placing more focus on oop and less on the abstract data types and their underlying data structures to stress the importance of abstract data typesdata structuresand algorithmswe limit the discussion of oop to the use of base classes for implementing the various abstract data types we do not use class inheritance or polymorphism in the main part of the text but instead provide basic introduction as an appendix this choice was made for several reasons firstour objective is to provide "back to xiii