We may earn an affiliate commission when you visit our partners.
Take this course
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

Traffic lights

Read about what's good
what should give you pause
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

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Foundational combinatorics and probability

According to learners, this course offers a solid foundation in combinatorics and probability, concepts crucial for computer science and data analysis roles. While many find the initial lectures clear, a frequent theme is that the course's difficulty is higher than anticipated, suggesting students may need more than basic math prerequisites. The homework assignments and quizzes are often cited as particularly challenging, sometimes requiring knowledge or intuition beyond the core lecture material. Despite the difficulty, the programming project and exercises are seen as valuable for practical application, and the course is generally well-regarded by those who persevere through its rigorous approach.
Early lectures clear, some later parts less so.
"The initial lectures were very well explained and easy to follow."
"Found some of the later video explanations a bit rushed or not detailed enough when covering more complex topics."
"The instructor is knowledgeable, but presentation could sometimes be more intuitive."
Final project helps solidify understanding.
"The final dice game project was interesting and helped me apply the probabilistic concepts practically."
"Appreciated the Python integration; it made the abstract ideas feel more concrete."
"The programming exercises were a good way to test understanding through implementation."
Provides a strong base for further study/work.
"Despite the challenges, I feel like I have a much stronger foundation in probability and counting techniques now."
"This course gave me the necessary groundwork for understanding algorithms and data science concepts."
"It's a great introduction to the theoretical aspects needed for computer science applications."
"I finally understand concepts that were fuzzy before taking this course."
Homework and quizzes are quite difficult.
"The homework problems were significantly harder than the examples provided in the lectures, which was frustrating."
"Quizzes felt like a major step up in complexity from the practice problems."
"I spent most of my time trying to figure out the assignments rather than reviewing lectures."
"Some questions felt outside the scope of what was taught, requiring external resources."
Course is more challenging than prerequisites imply.
"The difficulty level ramped up very quickly. "Basic math" prerequisites feel misleading; you really need a solid math background."
"I struggled significantly with the later modules and assignments. It was much harder than I thought it would be."
"Be prepared for a steep learning curve. This isn't an easy stroll, especially if you're new to proofs or discrete math."
"Found myself spending a lot of time outside the course material to grasp concepts needed for the homework."

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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser