11.07.2015 Views

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

xivPrefacephases of software design <strong>and</strong> implement<strong>at</strong>ion, so the concept must becomedeeply ingrained.3. Programmers should know enough about common practice to avoid reinventingthe wheel. Thus, programmers need to learn the commonly usedd<strong>at</strong>a structures, their rel<strong>at</strong>ed algorithms, <strong>and</strong> the most frequently encountereddesign p<strong>at</strong>terns found in programming.4. <strong>D<strong>at</strong>a</strong> structures follow needs. Programmers must learn to assess applic<strong>at</strong>ionneeds first, then find a d<strong>at</strong>a structure with m<strong>at</strong>ching capabilities. To do thisrequires competence in Principles 1, 2, <strong>and</strong> 3.As I have taught d<strong>at</strong>a structures through the years, I have found th<strong>at</strong> designissues have played an ever gre<strong>at</strong>er role in my courses. This can be traced throughthe various editions of this textbook by the increasing coverage for design p<strong>at</strong>terns<strong>and</strong> generic interfaces. The first edition had no mention of design p<strong>at</strong>terns. Thesecond edition had limited coverage of a few example p<strong>at</strong>terns, <strong>and</strong> introducedthe dictionary ADT. With the third edition, there is explicit coverage of somedesign p<strong>at</strong>terns th<strong>at</strong> are encountered when programming the basic d<strong>at</strong>a structures<strong>and</strong> algorithms covered in the book.Using the Book in Class: <strong>D<strong>at</strong>a</strong> structures <strong>and</strong> algorithms textbooks tend to fallinto one of two c<strong>at</strong>egories: teaching texts or encyclopedias. Books th<strong>at</strong> <strong>at</strong>tempt todo both usually fail <strong>at</strong> both. This book is intended as a teaching text. I believe it ismore important for a practitioner to underst<strong>and</strong> the principles required to select ordesign the d<strong>at</strong>a structure th<strong>at</strong> will best solve some problem than it is to memorize alot of textbook implement<strong>at</strong>ions. Hence, I have designed this as a teaching text th<strong>at</strong>covers most st<strong>and</strong>ard d<strong>at</strong>a structures, but not all. A few d<strong>at</strong>a structures th<strong>at</strong> are notwidely adopted are included to illustr<strong>at</strong>e important principles. Some rel<strong>at</strong>ively newd<strong>at</strong>a structures th<strong>at</strong> should become widely used in the future are included.Within an undergradu<strong>at</strong>e program, this textbook is designed for use in either anadvanced lower division (sophomore or junior level) d<strong>at</strong>a structures course, or fora senior level algorithms course. New m<strong>at</strong>erial has been added in the third editionto support its use in an algorithms course. Normally, this text would be used in acourse beyond the st<strong>and</strong>ard freshman level “CS2” course th<strong>at</strong> often serves as theinitial introduction to d<strong>at</strong>a structures. Readers of this book should typically havetwo semesters of the equivalent of programming experience, including <strong>at</strong> least someexposure to Java. Readers who are already familiar with recursion will have anadvantage. Students of d<strong>at</strong>a structures will also benefit from having first completeda good course in Discrete M<strong>at</strong>hem<strong>at</strong>ics. Nonetheless, Chapter 2 <strong>at</strong>tempts to givea reasonably complete survey of the prerequisite m<strong>at</strong>hem<strong>at</strong>ical topics <strong>at</strong> the levelnecessary to underst<strong>and</strong> their use in this book. Readers may wish to refer backto the appropri<strong>at</strong>e sections as needed when encountering unfamiliar m<strong>at</strong>hem<strong>at</strong>icalm<strong>at</strong>erial.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!