We may earn an affiliate commission when you visit our partners.
Course image
Alexander S. Kulikov and Владимир Подольский

Counting 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 create a list of all phone numbers to ensure that there are enough phone numbers for everyone? Is there a way to tell that our algorithm will run in a reasonable time before implementing and actually running it? All these questions are addressed by a mathematical field called Combinatorics.

Read more

Counting 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 create a list of all phone numbers to ensure that there are enough phone numbers for everyone? Is there a way to tell that our algorithm will run in a reasonable time before implementing and actually running it? All these questions are addressed by a mathematical field called Combinatorics.

In this online course we discuss most standard combinatorial settings that can help to answer questions of this type. We will especially concentrate on developing the ability to distinguish these settings in real life and algorithmic problems. This will help the learner to actually implement new knowledge. Apart from that we will discuss recursive technique for counting that is important for algorithmic implementations.

One of the main ‘consumers’ of Combinatorics is Probability Theory. This area is connected with numerous sides of life, on one hand being an important concept in everyday life and on the other hand being an indispensable tool in such modern and important fields as Statistics and Machine Learning. In this course we will concentrate on providing the working knowledge of basics of probability and a good intuition in this area. The practice shows that such an intuition is not easy to develop.

In the end of the course we will create a program that successfully plays a tricky and very counterintuitive dice game.

As prerequisites we assume only basic math (e.g., we expect you to know what is a square or how to add fractions), basic programming in python (functions, loops, recursion), common sense and curiosity. Our intended audience are all people that work or plan to work in IT, starting from motivated high school students.

Enroll now

What's inside

Syllabus

Basic Counting
Counting is one of the basic mathematically related tasks we encounter on a day to day basis. The main question here is the following: can we count the number of objects without listing all of them? This question arises naturally in various scenarios both in real life and in Computer Science. What is the number of different phone numbers or license plates? What is the number of different combinations one needs to brute force in order to crack a password? Is there a way to tell that an algorithm will run in a reasonable time before implementing and actually running it? All these questions are addressed by a mathematical field called combinatorics. In this module, we consider the basic building blocks of combinatorics. All of them are easy to understand and at the same time are powerful enough to handle various non-trivial questions. To help you to develop an intuition, we consider short Python code snippets for generating the objects to be counted.
Read more
Binomial Coefficients
In how many ways one can select a team of five students out of ten students? What is the number of non-negative integers with at most five digits whose digits are decreasing? In how many ways one can get from the bottom left cell to the top right cell of a 5x5 grid, each time going either up or to the right? And why all these three numbers are equal? We'll figure this out in this module!
Advanced Counting
We have already considered most of the standard settings in Combinatorics that allow us to address many counting problems. However, successful application of this knowledge on practice requires considerable experience in this kind of problems. In this module, we will address the final standard setting in our course, combinations with repetitions, and then we will gain some experience by discussing various problems in Combinatorics.
Probability
The word "probability" is used quite often in the everyday life. However, not always we can speak about probability as some number: for that a mathematical model is needed. What is this mathematical model (probability space)? How to compute probabilities (if the model is given)? How to judge whether the model is adequate? What is conditional probability and Bayes' theorem? How our plausible reasoning can be interpreted in terms of Bayes' theorem? In this module we cover these questions using some simple examples of probability spaces and real life sutiations.
Random Variables
In the previous module we discussed how to compute probabilities of random events. But in many practical situation we are interested not only in positive or negative outcome, but also in some quantitative characteristics of an outcome. Among these cases are number of steps of an algorithms, number of points that one can win in the games involving any kind of randomness, all quantitative characteristics of a random person in some group of people. Basically settings of this kind arise in all situations when (a) any kind of uncertainty is presented (b) we are interested in quantitative characteristics. The mathematical model for this is called random variables. And we will discuss them in this module.
Project: Dice Games
In this module, we will apply accumulated knowledge to create a project solving a certain dice game. The game is very simple: two players pick a dice each from a given pool of dices with various numbers on their sides. Then each player throws his dice and the one with the greater number on his dice wins. The game looks very simple and it seems that it is very easy to play this game optimally once we know our pool of dices. Yet it turns out that this intuition is overwhelmingly wrong: the game turns out to be very counterintuitive. In this module we will discuss the game in detail and create a program that finds an optimal strategy to play the game on a given pool of dices.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Introduces foundational concepts in Combinatorics necessary for careers involving IT
Offers a practical approach to counting and probability, important concepts in computer science and data science
Provides an accessible introduction to Probability Theory and its applications in real life
Suitable for individuals with basic math and programming knowledge who seek to develop their skills in counting and probability
Teaches recursive techniques for counting, which are essential for efficient algorithms
Provides opportunities to apply knowledge through a hands-on project

Save this course

Save Combinatorics and Probability to your list so you can find it easily later:
Save

Reviews summary

Challenging but rewarding course in combinatorics and probability

Learners say this course starts with engaging assignments about combinatorics, then delves deeply into probability. Many find the material to be difficult but rewarding, especially those who are familiar with high school mathematics. Instructors are described as knowledgeable and have a clear teaching style, however pronunciation issues make understanding difficult at times. Some assignments and exercises are said to be tough and the explanations in the final project are said to be unclear. Overall, learners recommend this course to those who have a strong foundation in math and are willing to put in effort.
Fun and Thought-Provoking
"Learners say this course starts with engaging assignments about combinatorics, then delves deeply into probability."
"Many find the material to be difficult but rewarding, especially those who are familiar with high school mathematics."
Challenging but Rewarding
"Learners say this course starts with engaging assignments about combinatorics, then delves deeply into probability."
"Many find the material to be difficult but rewarding, especially those who are familiar with high school mathematics."
"Some assignments and exercises are said to be tough and the explanations in the final project are said to be unclear."
Final Project Instructions Lacking
"Some assignments and exercises are said to be tough and the explanations in the final project are said to be unclear."
Knowledgeable but Difficult to Understand
"Instructors are described as knowledgeable and have a clear teaching style, however pronunciation issues make understanding difficult at times."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Combinatorics and Probability with these activities:
Review basic probability and statistics
Reviewing basic probability and statistics will provide a solid foundation for understanding the concepts covered in this course.
Browse courses on Probability
Show steps
  • Read through your notes or textbook chapters on probability and statistics.
  • Solve practice problems to test your understanding.
Solve combinatorial problems
Solving combinatorial problems will help you develop the skills necessary to apply the concepts learned in this course to real-world scenarios.
Browse courses on Combinatorics
Show steps
  • Find a set of practice problems online or in a textbook.
  • Set a timer for yourself and try to solve as many problems as you can within the time limit.
  • Check your answers and identify any areas where you need improvement.
Create a cheat sheet on probability distributions
Creating a cheat sheet on probability distributions will help you organize and retain the information you learn in this course.
Browse courses on Probability
Show steps
  • Gather information on different probability distributions, such as their formulas, properties, and applications.
  • Create a table or diagram that summarizes the key information for each distribution.
Three other activities
Expand to see all activities and additional details
Show all six activities
Watch video tutorials on advanced combinatorial techniques
Watching video tutorials on advanced combinatorial techniques will expose you to new ideas and approaches that can enhance your understanding of the subject.
Browse courses on Combinatorics
Show steps
  • Search for video tutorials on specific combinatorial topics that you are interested in.
  • Take notes while watching the tutorials and make sure to pause and rewind when necessary.
  • Practice the techniques you learn by solving problems or completing exercises.
Attend a workshop on probability and statistics
Attending a workshop on probability and statistics will provide you with an opportunity to learn from experts and engage in hands-on activities.
Browse courses on Probability
Show steps
  • Find a relevant workshop in your area or online.
  • Register for the workshop and make sure to attend all sessions.
  • Participate actively in the discussions and activities.
Develop a program to simulate a dice game
Developing a program to simulate a dice game will help you apply the concepts of probability and statistics to a real-world scenario.
Browse courses on Probability
Show steps
  • Design the game rules and determine the probabilities of different outcomes.
  • Choose a programming language and write the code for the simulation.
  • Test the simulation by running it multiple times and analyzing the results.

Career center

Learners who complete Combinatorics and Probability will develop knowledge and skills that may be useful to these careers:
Data Scientist
Data Scientists use probability to build mathematical models that can help organizations make better decisions. The course covers the basics of probability, such as how to calculate probabilities, conditional probability, and Bayes' theorem. This knowledge can help Data Scientists develop models that are more accurate and reliable. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including data science.
Machine Learning Engineer
Machine Learning Engineers use probability and statistics to develop and implement machine learning algorithms. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Machine Learning Engineers develop models that can learn from data and make predictions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including machine learning.
Business Analyst
Business Analysts use probability and statistics to analyze data and make business decisions. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Business Analysts develop models that can predict future trends and make informed business decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including business analysis.
Operations Research Analyst
Operations Research Analysts use probability and statistics to solve problems in a variety of fields, including logistics, manufacturing, and healthcare. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Operations Research Analysts develop models that can optimize processes and improve efficiency. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including operations research.
Statistician
Statisticians use probability and statistics to collect, analyze, and interpret data. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Statisticians develop models that can be used to make informed decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including statistics.
Software Engineer
Software Engineers use combinatorics to design and implement efficient algorithms. The course covers the basics of combinatorics, such as how to count the number of objects in a set, and how to generate permutations and combinations. This knowledge can help Software Engineers develop algorithms that run faster and use less memory. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including software engineering.
Data Analyst
Data Analysts use probability and statistics to analyze data and make decisions. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Data Analysts develop models that can identify trends and make informed decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including data analysis.
Financial Analyst
Financial Analysts use probability and statistics to analyze financial data and make investment decisions. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Financial Analysts develop models that can predict future financial performance and make informed investment decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including financial analysis.
Quantitative Analyst
Quantitative Analysts use probability and statistics to make financial decisions. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Quantitative Analysts develop models that can predict future financial performance. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including quantitative finance.
Actuary
Actuaries use probability and statistics to assess risk. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Actuaries develop models that can predict the likelihood of future events. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including actuarial science.
Risk Manager
Risk Managers use probability and statistics to assess and manage risk. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Risk Managers develop models that can predict the likelihood of future events and assess the potential impact of those events. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including risk management.
Epidemiologist
Epidemiologists use probability and statistics to study the distribution and determinants of health-related states or events (including disease), and the application of this study to the control of diseases and other health problems. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Epidemiologists develop models that can be used to understand the causes of disease and develop strategies to prevent and control it. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including epidemiology.
Biostatistician
Biostatisticians use probability and statistics to analyze data in the field of biology. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Biostatisticians develop models that can be used to understand biological processes and make informed decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including biostatistics.
Market Researcher
Market Researchers use probability and statistics to collect and analyze data about consumer behavior. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Market Researchers develop models that can predict consumer behavior and make informed marketing decisions. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including market research.
Insurance Underwriter
Insurance Underwriters use probability and statistics to assess risk and determine insurance premiums. The course covers the basics of probability and statistics, such as how to calculate probabilities, expected values, and standard deviations. This knowledge can help Insurance Underwriters develop models that can predict the likelihood of future events and assess the potential impact of those events. Additionally, the course covers advanced counting techniques, which can be used to solve problems in a variety of fields, including insurance underwriting.

Reading list

We've selected 19 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Combinatorics and Probability.
This classic textbook provides a comprehensive introduction to combinatorics and probability theory, with a strong emphasis on applications to computer science. It covers a wide range of topics, including counting techniques, generating functions, and graph theory.
Provides a comprehensive and rigorous treatment of combinatorics. It is suitable for advanced undergraduates and graduate students, and it covers a wide range of topics, including counting techniques, graph theory, and optimization problems.
This textbook provides a comprehensive introduction to combinatorics and graph theory, with a focus on applications to computer science. It covers a wide range of topics, including counting techniques, generating functions, and graph algorithms.
Provides a clear and concise introduction to probability and counting for computer scientists. It covers a wide range of topics, including basic probability concepts, combinatorial arguments, and Markov chains. The book is accessible to students with a basic understanding of mathematics.
This textbook provides a comprehensive introduction to probability theory, with a focus on applications to computer science. It covers a wide range of topics, including probability distributions, random variables, and stochastic processes.
This textbook provides a comprehensive introduction to combinatorial optimization, with a focus on algorithms and complexity. It covers a wide range of topics, including linear programming, integer programming, and network flows.
Provides a comprehensive introduction to mathematical statistics. It covers a wide range of topics, including probability theory, statistical inference, and regression analysis. The book is suitable for students with a basic understanding of calculus and linear algebra.
This textbook provides a comprehensive introduction to algorithms, with a focus on design and analysis. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Provides a comprehensive introduction to probability and statistics. It covers a wide range of topics, including basic probability concepts, statistical inference, and regression analysis. The book is suitable for students with a basic understanding of mathematics.
This textbook provides a comprehensive introduction to discrete mathematics, with a focus on applications to computer science. It covers a wide range of topics, including logic, set theory, graph theory, and number theory.
Provides a comprehensive introduction to mathematical statistics. It covers a wide range of topics, including probability theory, statistical inference, and regression analysis. The book is suitable for students with a basic understanding of calculus and linear algebra.
This textbook provides a comprehensive introduction to probability and statistics, with a focus on applications to computer science. It covers a wide range of topics, including probability distributions, random variables, and statistical inference.
This textbook provides a comprehensive introduction to algorithm design, with a focus on algorithmic techniques. It covers a wide range of topics, including greedy algorithms, dynamic programming, and network flows.
This classic textbook provides a comprehensive introduction to fundamental algorithms, with a focus on design and analysis. It covers a wide range of topics, including sorting, searching, and graph algorithms.
This textbook provides a comprehensive introduction to the theory of computation, with a focus on automata theory and computability. It covers a wide range of topics, including finite automata, pushdown automata, and Turing machines.
This textbook provides a comprehensive introduction to logic and computation, with a focus on applications to computer science. It covers a wide range of topics, including propositional logic, predicate logic, and non-classical logics.
This textbook provides a comprehensive introduction to probability theory, with a focus on applications to mathematics and science. It covers a wide range of topics, including probability distributions, random variables, and stochastic processes.
This textbook provides a comprehensive introduction to the combinatorics of permutations and combinations, with a focus on applications to computer science. It covers a wide range of topics, including counting techniques, generating functions, and graph theory.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Combinatorics and Probability.
Complete Remote Sensing and GIS - ArcGIS - Erdas
Health Masterclass: How To Transform Your Health & Life
Number Sense for Primary Education with PhET Simulations
Combinatorial Mathematics | 组合数学
Adobe CC Masterclass: Photoshop, Illustrator, XD &...
The Complete Graphic Design Theory for Beginners Course
Astrobiology: Exploring Other Worlds
Super-Earths and Life
Getting There and Going Beyond
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser