chap data structures and algorithms to design an algorithm that is easy to understandcodeand debug to design an algorithm that makes efficient use of the computer' resources ideallythe resulting program is true to both of these goals we might say that such program is "elegant while the algorithms and program code examples presented here attempt to be elegant in this senseit is not the purpose of this book to explicitly treat issues related to goal ( these are primarily concerns of the discipline of software engineering ratherthis book is mostly about issues relating to goal ( how do we measure efficiency describes method for evaluating the efficiency of an algorithm or computer programcalled asymptotic analysis asymptotic analysis also allows you to measure the inherent difficulty of problem the remaining use asymptotic analysis techniques for every algorithm presented this allows you to see how each algorithm compares to other algorithms for solving the same problem in terms of its efficiency this first sets the stage for what is to followby presenting some higherorder issues related to the selection and use of data structures we first examine the process by which designer selects data structure appropriate to the task at hand we then consider the role of abstraction in program design we briefly consider the concept of design pattern and see some examples the ends with an exploration of the relationship between problemsalgorithmsand programs philosophy of data structures the need for data structures you might think that with ever more powerful computersprogram efficiency is becoming less important after allprocessor speed and memory size still seem to double every couple of years won' any efficiency problem we might have today be solved by tomorrow' hardwareas we develop more powerful computersour history so far has always been to use additional computing power to tackle more complex problemsbe it in the form of more sophisticated user interfacesbigger problem sizesor new problems previously deemed computationally infeasible more complex problems demand more computationmaking the need for efficient programs even greater worse yetas tasks become more complexthey become less like our everyday experience today' computer scientists must be trained to have thorough understanding of the principles behind efficient program designbecause their ordinary life experiences often do not apply when designing computer programs