Аннотация
Typical algorithms and data structures textbooks are seven or eight hundred pages long, include chapters about software engineering and the programming language used in the book, and include appendices with yet more information about the programming language. Often they include lengthy case studies with tens of pages of specif i cations and code. Frequently they are hardcover books printed in two colors; sometimes they have sidebars with various sorts of supplementary material. All of these characteristics make these textbooks very expensive (and very heavy), but in my experience, relatively few students take advantage of the bulk of this material and few appreciate these books’ many features: much of the time and money lavished on these texts is wasted on their readers.
Students seem to prefer dealing with only essential material compressed into the fewest number of pages. Perhaps this is attributable to habits formed by life on the Internet, or perhaps it is due to extreme pragmatism. But whatever the reason, it seems very dif f i cult to persuade most computer science students to engage with long texts, large examples, and extra material, no matter how well it is presented and illustrated. Th is text is a response to this tendency.
T h is text covers the usual topics in an introductory survey of algorithms and data structures, but it does so in under 200 pages. Th ere are relatively few examples and no large case studies.
Code is presented in Java (more about this in a moment), but the book does not teach Java and it does not include reference material about the language. Th ere are no sidebars and the book is in black and white. Th e book does include features of pedagogical value: every chapter has review questions with answers, and a set of exercises. Th ere is also a glossary at the end. Versions of this book using Java and other programming languages have been used successfully for several years to teach introductory algorithms and data structures at James Madison University. Many students have commented appreciatively regarding its brevity, clarity, and low cost.
Ideally, a language for algorithms and data structures would be easy to learn (so as to leave time for learning algorithms and data structures), support data abstraction well, provide a good development environment, and engage students. Although Java is large and therefore a challenge to learn, a subset of it adequate for the needs of an introductory algorithms and data structures course can be learned with some ef f ort. Java is an object-oriented language with interfaces and generics, so it does an excellent job supporting data abstraction. It is also statically typed and provides assertions, so it provides lots of help to novice programmers.
Finally, it is fully supported by Eclipse, including the industry standard JUnit testing framework, which help students a great deal. Th anks to its popularity, many students learn Java in high school or on their own, and those who do not know it want to learn it. Overall, Java is an excellent choice for teaching algorithms and data structures.
Комментарии к книге "Java Data Structures and Algorithms"