- Shopping Bag ( 0 items )
Ships from: Troy, MI
Usually ships in 1-2 business days
Ships from: Chicago, IL
Usually ships in 1-2 business days
If you are an instructor, why should you choose this textbook for your students? If you are a student, why should you read this text? The material included in this text provides an introduction to discrete mathematics and is intended for first year students so that their later courses in mathematics and/or computer science can be covered in more depth than they could be without this foundational background. The text is not intended to be a comprehensive collection of discrete mathematics topics, but rather it ties selected topics to concepts in computer science and it includes programming problems along with written exercises. Unlike the large, comprehensive texts, this one can be covered in a semester. For computer science students, there are programming exercises. For math students without an interest in programming, there are plenty of exercises of different levels to challenge them.
This text evolved over a 10-year period from notes for our second semester freshman course for computer science students. This course has included about two-thirds mathematics and about one-third programming. Our students have found immediate benefits in their next course, Data Structures and Algorithms Analysis, as well as all other upper level courses. You will find the style focused on the chosen topics; we make no attempt at a complete coverage of those concepts. We chose the topics with two goals in mind: to lay a strong mathematical foundation and to show that mathematics has immediate application in computer science.
There is little, if any, controversy over whether or not computer science students should study mathematics. The resounding consensus is that mathematics iscritical to the study and practice of computer science. It is not so easy to gain agreement among academicians and practitioners as to exactly what areas of mathematics should be studied, how rigorous, the presentation should be, and at what points in the curriculum these ideas should be introduced.
Having been involved in the education of computer science students and having been responsible for teaching students who have taken a variety of mathematics courses, it is our belief that it is wise to include some fundamental mathematics in the first-year computer science curriculum. We believe that there are enough topics for which students can see immediate applications that it is worthwhile to make those topics a dart of the CS1 or CS2 course. This is not to say that students would not need or benefit from other courses in mathematics in addition to what they learn at this point. Rather, we believe that students will enjoy and get more from later mathematics courses because they have some background in basic ideas.
This book is not intended to be "the" math course for computer science students. It is intended to help students understand the importance of mathematics and see its relevance in a variety of applications. Indeed, most students will take some sort of discrete mathematics course later in their careers. The most immediate application for students is in analyzing algorithms, something they will start doing in earnest in their next course or two. To understand not only standard arithmetic algorithms but also important algorithms in cryptology, students must understand modular arithmetic and basic number theory. Concerns arise later that require a foundation in mathematics.
Precision of expression is the key to carrying out the tasks of both program specification and program correctness, and mathematics provides the foundation for this precision. Mathematics teaches us to be exact in what we say and how we think. It gives us the capability to express our ideas in such a way as to avoid being misunderstood. The study of mathematics in general, regardless of specific content, promotes precision of expression and attention to detail in reasoning. However, we have chosen particular mathematical structures that have direct applications in computer science, hence addressing two goals. First, we concern ourselves with the task of helping students develop reasoning skills and exactness of expression. Our second goal is to provide the fundamental mathematics necessary for computer scientists.
Many exercises are included at the end of each chapter. Some suggestions for programming problems have been included. Most are easily embellished or altered to meet the needs of the course. Some exercises and programming problems have been starred. These indicate more challenging problems.
Many people aided in the creation of this text. We'd like to thank first our students who, over many semesters, pointed out errors in the text (typographic and other) and offered suggestions about exercises. We'd like to mention particularly Rohit Bansal and Tony Fressola in this regard.
The editorial staff at Prentice-Hall has been particularly helpful: Patricia Daly, Jeanne Audino and George Lobell. The original manuscript has come a long way thanks to them.
And finally, we'd like to thank our spouses, Robin and Gil.
Any errors and typos are, of course, our responsibility. We would like to hear from you if you find any. Please email us with any errors you find or comments you have about the text.
Posted October 25, 2008
No text was provided for this review.