We’ll implement together an efficient program for a problem needed by delivery companies all over the world millions times per day — the travelling salesman problem. The goal in this problem is to visit all the given places as quickly as possible. How to find an optimal solution to this problem quickly? We still don’t have provably efficient algorithms for this difficult computational problem and this is the essence of the P versus NP problem, the most important open question in Computer Science. Still, we’ll implement several efficient solutions for real world instances of the travelling salesman problem. While designing these solutions, we will rely heavily on the material learned in the courses of the specialization: proof techniques, combinatorics, probability, graph theory. We’ll see several examples of using discrete mathematics ideas to get more and more efficient solutions.
Introduction to Discrete Mathematics for Computer Science Specialization
Build a Foundation for Your Career in IT. Master the math powering our lives and prepare for your software engineer or security analyst career
About This Specialization
Discrete Math is needed to see mathematical structures in the object you work with, and understand their properties. This ability is important for software engineers, data scientists, security and financial analysts (it is not a coincidence that math puzzles are often used for interviews). We cover the basic notions and results (combinatorics, graphs, probability, number theory) that are universally needed. To deliver techniques and ideas in discrete mathematics to the learner we extensively use interactive puzzles specially created for this specialization. To bring the learners experience closer to IT-applications we incorporate programming examples, problems and projects in our courses.
Follow the suggested order or choose your own.
Designed to help you practice and apply the skills you learn.
Highlight your new skills on your resume or LinkedIn.
- Beginner Specialization.
- No prior experience required.
Mathematical Thinking in Computer Science
- 6 weeks, 2–5 hours/week
About the CourseMathematical thinking is crucial in all areas of computer science: algorithms, bioinformatics, computer graphics, data science, machine learning, etc. In this course, we will learn the most important tools used in discrete mathematics: in
Combinatorics and Probability
- 6 weeks, 3-5 hours/week
About the CourseCounting is one of the basic mathematically related tasks we encounter on a day to day basis. The main question here is the following. If we need to count something, can we do anything better than just counting all objects one by one? Do we need to
Introduction to Graph Theory
- 5 weeks, 3-5 hours/week
About the CourseWe invite you to a fascinating journey into Graph Theory — an area which connects the elegance of painting and the rigor of mathematics; is simple, but not unsophisticated. Graph Theory gives us, both an easy way to pictorially represent many major math
Number Theory and Cryptography
- 4 weeks, 2-5 hours/week
About the CourseWe all learn numbers from the childhood. Some of us like to count, others hate it, but any person uses numbers everyday to buy things, pay for services, estimated time and necessary resources. People have been wondering about numbers’ properties for t
- 3 weeks of study, 2–5 hours/week
About the CourseWe’ll implement (in Python) together efficient programs for a problem needed by delivery companies all over the world millions times per day — the travelling salesman problem. The goal in this problem is to visit all the given places as quickly as possible
Alexander S. Kulikov
More questions? Visit the Learner Help Center.