Название: Connecting Discrete Mathematics and Computer Science, 2nd Edition Автор: David Liben-Nowell Издательство: Cambridge University Press Год: 2022 Страниц: 694 Язык: английский Формат: pdf (true) Размер: 41.6 MB
Computer Science (CS) majors taking a non-programming-based course like discrete mathematics might ask 'Why do I need to learn this?' Written with these students in mind, this text introduces the mathematical foundations of Computer Science by providing a comprehensive treatment of standard technical topics while simultaneously illustrating some of the broad-ranging applications of that material throughout the field. Chapters on core topics from discrete structures – like logic, proofs, number theory, counting, probability, graphs – are augmented with around 60 'Computer Science connections' pages introducing their applications: for example, game trees (logic), triangulation of scenes in computer graphics (induction), the Enigma machine (counting), algorithmic bias (relations), differential privacy (probability), and paired kidney transplants (graphs). Pedagogical features include 'Why You Might Care' sections, quick-reference chapter guides and key terms and results summaries, problem-solving and writing tips, 'Taking it Further' asides with more technical details, and around 1700 exercises, 435 worked examples, and 480 figures.
This book is designed for an undergraduate student who has taken a Computer Science class or three. Most likely, you are a sophomore or junior prospective or current computer science major taking your first non-programming-based CS class. If you are a student in this position, you may be wondering why you’re taking this class (or why you have to take this class!). Computer Science students taking a class like this one sometimes don’t see why this material has anything to do with computer science—particularly if you enjoy CS because you enjoy programming.
I want to be clear: programming is awesome! But there’s more to CS than programming. In fact, many seemingly unrelated problems rely on the same sorts of abstract thinking. It’s not at all obvious that an optimizing compiler (a program that translates source code in a programming language like C into something directly executable by a computer) would have anything important in common with a program to play chess perfectly. But, in fact, they’re both tasks that are best understood using logic (Chapter 3) as a central component of any solution. Similarly, filtering spam out of your inbox (“given a message m, should m be categorized as spam?”) and doing speech recognition (“given an audio stream s of a person speaking in English, what is the best ‘transcript’ reflecting the words spoken in s?”) are both best understood using probability (Chapter 10).
And these, of course, are just examples; there are many, many ways in which we can gain insight and efficiency by thinking more abstractly about the commonalities of interesting and important CS problems. That is the goal of this book: to introduce the kind of mathematical, formal thinking that will allow you to understand ideas that are shared among disparate applications of Computer Science—and to make it easier for you to make your own connections, and to extend CS in even more new directions.
Скачать Connecting Discrete Mathematics and Computer Science, 2nd Edition