Computer science introductory texts are often unnecessarily long. Many exceed 500 pages, laboriously describing every nuance of whatever programming language they are using to introduce the concepts.
There is a better way: a programming language that has a low entry barrier. Preferably, the language selected should be a real, widely used language with a subset that is powerful and useful, yet mercifully small. Such a choice should arm the readers with marketable tools. The esoteric details of the programming language, however, should be ignored but with pointers for future investigation provided.
Ruby is a programming language well suited to this task. It is object-oriented, interpreted, and relatively straightforward. More so, instead of being purely educationally oriented, its popularity in industry is steadfastly growing.
Our book should be covered in sequential fashion. Each chapter assumes that the material from the preceding chapters has been mastered. To focus the discussion, we ignore gory details, such as user interface design and development issues, that we believe are ancillary to the core of computer science. Such issues should be, and are, covered in depth in a variety of subsequent courses.
Our target audience is students and practitioners who wish to learn computer science using Ruby rather than just how to program in a given language. This book consistently emphasizes why computer science is different from computer programming. Students and practitioners must understand what an algorithm is and what differentiates differing algorithms for the same task. Although we are living in an era of growing compu‐ tational resources, we are also living in a world of growing data sets. Data amass every day; thus, efficient algorithms are needed to process these data.
Students and practitioners completing a course using this book possess foundational knowledge in the basics of computer science and are prepared to master abstract and advanced concepts. Second semester courses should rely on languages other than Ruby, furthering the understanding that programming languages are just interchangeable, expressive tools. We know, however, that many students and practitioners may not take another computer science course. If that is the case, this book provides them with an overview of the field and an understanding of at least one popular programming lan‐ guage that happens to be useful from both a practical and a pedagogical standpoint.
Concepts taught in this book provide students and practitioners with a sufficient foundation to later learn more complex algorithms, advanced data structures, and new programming languages.
Finally, we hope to instill a core appreciation for algorithms and problem solving so students and practitioners will solve problems with elegance and inspiration rather than simply plowing ahead with brute force.
Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг!