viii we delay treatment of object-oriented programming in python until this is useful for those new to pythonand for those who may be familiar with pythonyet not with object-oriented programming in terms of mathematical backgroundwe assume the reader is somewhat familiar with topics from high-school mathematics even soin we discuss the seven most-important functions for algorithm analysis in factsections that use something other than one of these seven functions are considered optionaland are indicated with star (we give summary of other useful mathematical factsincluding elementary probabilityin appendix relation to computer science curriculum to assist instructors in designing course in the context of the ieee/acm computing curriculumthe following table describes curricular knowledge units that are covered within this book knowledge unit al/basic analysis al/algorithmic strategies al/fundamental data structures and algorithms al/advanced data structures ar/memory system organization and architecture ds/setsrelations and functions ds/proof techniques ds/basics of counting ds/graphs and trees ds/discrete probability pl/object-oriented programming pl/functional programming sdf/algorithms and design sdf/fundamental programming concepts sdf/fundamental data structures sdf/developmental methods se/software design relevant material and sections sections sections much of sections through sections sections sections appendix much of and sections much of the bookyet especially and sections section sections appendix aand sections sections sections mapping ieee/acm computing curriculum knowledge units to coverage in this book