Discrete mathematics
for computer science
Learn the math that defines computer science, and practice applying it through mathematical proofs and Python code.
Discrete mathematics
for computer science
Learn the math that defines computer science, and practice applying it through mathematical proofs and Python code.
Discrete Mathematics is the language of Computer Science. One needs to be fluent in it to work in many fields including data science, machine learning, and software engineering (it is not a coincidence that math puzzles are often used for interviews). We introduce you to this language through a fun try-this-before-we-explain-everything approach: first you solve many interactive puzzles that are carefully designed specifically for this book, and then we explain how to solve the puzzles, and introduce important ideas along the way. We believe that this way, you will get a deeper understanding and will better appreciate the beauty of the underlying ideas (not to mention the self confidence that you gain if you invent these ideas on your own!). To bring your experience closer to IT-applications, we incorporate programming examples, problems, and projects in the book.
Problem-Based
Throughout the book we follow a ``try this before we explain everything'' approach: we always ask you to solve a problem first, and then explain how to solve it and introduce important ideas needed to solve it. We believe, this way you will get a deeper understanding and also develop a better appreciation for the beauty of the underlying ideas (not to mention the self-confidence that you get if you invent these ideas on your own!).
Interactive Puzzles
Interactive puzzles provide you with a fun way to "invent" the key ideas on your own. The puzzles are mobile-friendly, so you can play with them anywhere. The goal of every puzzle is to give you a clean and easy way to stateproblem where nothing distracts you from inventing a method for solving it. In turn, the corresponding method usually has a wide range of applications to various problems in computer science.
Programming
Code snippets are helpful in two ways: they show you how ideas from discrete mathematics are used in programming and they serve as interactive examples and challenges (tweak the given piece of code, run it, and see what happens). Programming challenges will help you to solidify your understanding. As Donald Knuth said, "I find that I don’t understand things unless I try to program them."
Learn anywhere
All the learning materials (videos, interactive puzzles, book) are optimised both for laptops and mobile devices. Enjoy them anywhere!
Authors
Georgetown University
Steklov Mathematical Institute at St. Petersburg, St. Petersburg State University, and JetBrains
Steklov Mathematical Institute at Moscow, Higher School of Economics
LIRMM, CNRS & University of Montepellier

Testimonials
"I loved this course! So many interesting things to think about, thoughtfully explained by brilliant instructors. The puzzles really get you thinking. Such genius to put them before the lectures!"
"Lot's of fun challenging puzzles and things to think about. Had a lot of fun. Learned interesting techniques like induction, double counting, and backtracking — which controls the combinatorial explosion of non-polynomial problems. The final bonus problem is really challenging and a great joy to solve. Don’t give up even if you’re not really a natural math person like me. You will find value here. Generally, this course, like my other favourites, is about how to think about things when you don’t know the formula."
"This course is really good for anyone who loves mathematics and programming. After this course I feel the way in which I used to analyse problems has changed. This thing really important for me as i’m a programmer. One more reason to recommend this course is that apart from learning material it has many puzzles which are really interesting."


See more reviews at Coursera
Get your copy
The book contains material corresponding to the first course in the associated specialization at Coursera, Mathematical Thinking in Computer Science. Future editions will cover the additional four courses, Combinatorics and Probability, Graph Theory, Number Theory and Cryptography, and Delivery Problem. There are 180 problems and 90 code snippets in the book. Most of the problems come with solutions and more than 50 are graded automatically (allowing you to check your solution immediately). By purchasing it, you will get all further updates for free.
Order the Book!
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website