I first got to know Discrete Mathematics and Its Application as a freshman—it was the main textbook in our “Discrete Mathematics 101” course, part of the standard computer science curriculum. The book is widely used in academic courses worldwide, with many elite universities such as UC Berkley recommending it. Although it was first published in 1988, it is still getting new editions.
I don’t want to put you to sleep with an academic definition of what “Discrete” mathematics is. You can think of it as mathematics that works on numbers that are easily storable as digits in computer memory. Meaning, this book is basically a detailed course on what kind of maths you can directly program a computer to execute. You’ll get a deeper understanding of why this matters after you study this book.
A classic textbook-style tome
The book follows the typical format of textbooks. First, explanations of mathematical concepts. Then, math problems with their step-by-step solutions. At the end of each chapter, a long list of exercises. One thing about this book got me hooked: throughout its pages, you’ll find boxes with pictures (or paintings) of famous mathematicians that are related to the material being taught. These boxes include interesting biographical notes about the mathematician’s life and accomplishments. I often found myself looking many pages ahead just to find the next box.
I loved the book’s boxes on famous mathematicians…
Thanks to these boxes, I learned about many interesting personalities I wouldn’t have heard of otherwise. One of the boxes that most impressed me was on Srinivasa Ramanujan. He was one of the most brilliant mathematicians that ever lived, educating himself in poverty with no external help, yet still managing to get admitted into Cambridge and contributing to the development of modern mathematics. I later found out they even made a movie on him, called “The Man Who Knew Infinity”(check out a 2-minute trailer).
The typical introductory course to discrete mathematics is only half-year long, which isn’t nearly enough to go through this book. In our university course, our teacher only required us to read a very tiny portion of the book. And even in this portion, we had to solve less than half of the exercises.
What you can expect to learn from the book
I took a liking to the book and decided to study it and do all its exercises on my own. After a few years, life got in the way, and I didn’t manage to go all the way through to the end. Discrete mathematics is the backbone of computer science, so the book ends up covering a lot of ground, including graph theory and many important algorithms. I was already studying many of these topics in other books, and time was short.
I can confidently say that if you fully study this book alone, doing all (or most) of its exercises, you’ll certainly build a respectable computer science foundation. The book includes several programming exercises at the end of each section. These are problems that cannot be resolved with pen and paper and require you to create and run algorithms. I didn’t do any of these programming tasks because I already had several other programming assignments. But they do seem like very interesting exercises.
Even though I didn’t reach all the way to the end of the book, I still did put in a very significant effort in studying this book and its exercises. And over the years since, this effort paid back many times over. I still have the romantic idea of getting back at the book and finishing it by doing all its exercises.
Which topics does the book cover?
The book starts from the very basics, by teaching the foundation of logic. It explains how statements can be shown to be logically true or false from the combination of simpler statements. In the first pages, the teachings aren’t all too different from those taught in law school. Fittingly, the first “box” on famous mathematicians features Aristotle, who created this type of study on logic over 23 centuries ago.
Building on this foundation, the book goes on to teach boolean logic—the second box features George Boole, who created boolean logic almost 2 centuries ago. Boolean logic is the framework that we still use today to build our electronic computers, and with its exercises, the book makes you understand precisely how, and why.
Grinding through this initial part on logic and doing all the exercises can feel super repetitive and boring. But if you do it, you’ll weave a strong net of logic in your brain that will stick, and make you a better programmer.
Then the book goes on to explain some more foundations of mathematics: sets, mathematical functions, sequences, and then algorithms. One of the boxes is dedicated to John Venn, the creator of the famous Venn diagrams. And of course, there’s a box for Al-Khowarizmi, the brilliant Arab mathematician that leaned his name to the word “algorithm”.
From there, it expands to explain the mathematical concepts of induction and recursion. Then it teaches counting techniques. The cool thing about this book is that you can see the author strives to shield the reader from the more complicated mathematical proofs and corner cases, and does the best to stick to the basics with lots of repetition, and examples of practical applications.
Some may say there’s even way too much repetition and examples, but I side with the author here. After all, the only way we can deeply learn something is through incessant repetition and practical application.
If you want to start your exploration of discrete mathematics not with a 1000-page book, but with a short and light introduction, check out Computer Science Distilled. It will quickly give you the fundamentals and get you hooked on advancing your programming practice.
My criticism of the book
Some parts of the book aren’t super well organized, so you’ll have to do some back-and-forth at some points to remember concepts that were explained dozen of pages back. Also, during my reading, I would sometimes get totally stuck, unable to understand a step in the math explanations. In these instances, I had to ask more senior colleagues or search online for alternative explanations.
About the Author
Kenneth H Rosen is an old-school member of AT&T, the birthplace of UNIX, which is the basis of most modern computing. He also wrote a very comprehensive reference book on UNIX, so we can be pretty sure Rosen has a massive programming experience. The combination of his programming expertise and his advanced math background is what has made this book so good, in my opinion.
I tried to find out more about Ken, the author, but he has a very low profile online. I wasn’t even able to find a good photo of him for this article. I hope he is well, and that he keeps updating the book for some decades more! As a book author myself, I’d be interested in asking Dr. Rosen how did he find the energy to create such a long book, covering such a vastly wide range of topics.
How to Buy the book
Discrete Mathematics and its Applications can be quite expensive, and difficult to ship internationally, due to its massive volume and weight. You can easily find it in online bookstores, such as BookDepository or Barnes & Noble. If you’re on a tight budget, you might consider buying the cheaper version of the book, which features a very light paperback cover and ultra-thin black-and-white pages. This versions is made for sale only in certain countries such as India and Nepal, but you can easily find it for purchase online on websites such as Craigslist.
Did you read Discrete Mathematics and Its Applications? What are your thoughts on it? Would you recommend a different book on the topic? Please write your comments below, we truly appreciate it!
Hey, thanks for a wonderful article. I am definitely looking forward to go through this book. I love your Distilled book. If you could reply please let me know what pathway should I follow to improve and contribute my programming skills in scientific domains.
Hi Rahul! Thank you so much for your kind words! I hope you like this discrete mathematics masterpiece. There’s a very wide range of subfields in computer science. Where specifically do you want to contribute? A good first step would be to join a university pursuing an undergraduate degree!
As you have said “after all, the only way we can deeply learn something is through incessant repetition and practical application”, this is indeed true because I have gone through the whole book once and now I will be going through it once more but following a different approach this time. The concepts in the book by Dr. Rosen can some times felt overwhelming but going through it again and again is making thing easier for me to grasp. I have yours “Computer Science Distilled” book with me, I went through the first chapter and it made my understanding even deeper, how maths is being employed to solve the real world problems. As you have began with the logic as the basis of computer science, I would go through the logic chapter in the discrete maths following the maths concepts you have mentioned ahead. I think this will help me grasp the fundamental maths required for computer science without going into the intricate details of all the chapters in the book. But still I will try to finish up the book in near future..
Thank you for your comment and kind words! I’m glad to hear that CS Distilled helped. Indeed, completnig Dr. Rosen’s book can be a multi-year project, but it’s totally worth it!