|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/combinatorics
课程评论:没有评论
课程名称:组合数学与概率论 课程概述:计数是我们日常生活中最基本的数学任务之一。我们将探讨如何在不逐一计数的情况下更高效地完成这一任务。我们会讨论诸如是否需要依赖所有电话号码的列表来确保每个人都有电话号码,以及如何在实现算法之前判断其运行时间等问题。这些问题由组合数学这一数学领域来解答。该在线课程将讨论多种标准组合环境,以帮助学生在现实生活和算法问题中区分这些环境,从而有效地实施新知识。同时,我们还将介绍递归计数技术,这对算法实现至关重要。 组合数学的一个主要应用领域是概率论。概率论与生活的方方面面密切相关,它不仅是日常生活的重要概念,还在统计学和机器学习等现代重要领域中具有不可或缺的作用。课程将重点提供概率基础的实际知识和良好的直觉,尽管这种直觉通常不易培养。 课程结束时,学员将创建一个成功参与复杂且反直觉的骰子游戏的程序。 课程需求:仅需基本的数学知识(例如:了解平方和分数相加),以及基础的Python编程知识(函数、循环、递归),热情和好奇心。课程适合所有打算或已经在IT领域工作的人,包括有动力的高中生。 课程大纲: 1. 基础计数:探讨不列出所有对象的情况下如何进行计数,讨论涉及的例子并通过Python代码片段帮助建立直觉。 2. 二项式系数:解决选取学生、数字的排列组合等问题,深入理解这些计数问题的内在联系。 3. 高级计数:介绍重复组合等标准设置,并通过多个组合问题增强实践经验。 4. 概率:讲解概率的数学模型及其如何计算,条件概率和贝叶斯定理等概念,并通过实际案例进行说明。 5. 随机变量:讨论涉及随机事件结果的定量特征,帮助理解如何在不确定性环境中应用随机变量的数学模型。 6. 项目:骰子游戏:应用所学知识解决复杂的骰子游戏,创建一个寻找最佳策略的程序,揭示游戏的反直觉特性。
Name:Basic Counting
Description: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.
Name:Binomial Coefficients
Description: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!
Name:Advanced Counting
Description: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.
Name:Probability
Description: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.
Name:Random Variables
Description: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.
Name:Project: Dice Games
Description: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.
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.