|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/what-is-a-proof
课程评论:没有评论
课程名称:计算机科学中的数学思维 课程概述:数学思维在计算机科学的各个领域中至关重要,包括算法、生物信息学、计算机图形学、数据科学、机器学习等。在本课程中,我们将学习离散数学中使用的最重要工具:归纳法、递归、逻辑、不变性、示例和最优性。我们将运用这些工具回答典型的编程问题,例如:我们如何确认解决方案的存在?我如何确保我的程序计算出最佳答案?这些对象是否满足给定的要求? 本在线课程采取“先尝试再解释一切”的方法:你将解决许多互动性(且适用于移动设备)的谜题,这些谜题经过精心设计,允许你自行发明许多重要的思想和概念。 课程前提: 1. 只需具备基础数学知识(例如,了解什么是平方数或如何加分数)、常识和好奇心。 2. 需要具备基础编程知识,因为部分测验需要使用Python编程。 课程大纲: 1. **有说服力的论证**:探讨什么使某些论证具备说服力,如何树立无可置疑的论点,以及数学思维如何助力这一过程。通过实例学习理解和发现证明的方式,享受其中的乐趣。 2. **如何寻找示例?**:讨论如何确保满足某些要求的对象存在,以及如何通过合理推理缩小搜索空间。在这一模块中,我们将学习各种技巧来展示对象的存在性和最优性,并实践解决互动谜题。 3. **递归与归纳**:探索定义对象、证明概念和实现程序的两种强大方法——递归和归纳。这两种方法在离散数学和计算机科学中被广泛使用,重要性在于能够将复杂问题分解为更小的问题。 4. **逻辑**:学习数学逻辑的基础知识,理解其在创建有说服力论证过程中的重要作用。通过练习逻辑的微妙之处,提高编写可读且精确代码的能力。 5. **不变性**:学习“不变性”的概念,即在一个过程中保持不变的属性。能找到合适的不变性是分析算法和程序行为的重要技能。 6. **解决15拼图**:通过著名的15拼图游戏,探索其可解性的数学原理,并了解偶置换和奇置换的基本性质,从而实现解决任何拼图配置的程序。 本课程旨在通过实践与知识的结合,培养学员的数学思维能力,使其在计算机科学的各个方面受益。
Name:Making Convincing Arguments
Description:Why are some arguments convincing and some others are not? What makes an argument convincing? How can you establish your argument in such a way that there is no room for doubt left? How can mathematical thinking help with this? In this section, we start digging into these questions. Our goal is to learn by examples how to understand proofs, how to discover them on your own, how to explain them, and — last but not least — how to enjoy them: we will see how a small remark or a simple observation can turn a seemingly non-trivial question into an obvious one.
Name:How to Find an Example?
Description:How can we be certain that an object with certain requirements exist? One way to show this, is to go through all objects and check whether at least one of them meets the requirements. However, in many cases, the search space is enormous. A computer may help, but some reasoning that narrows the search space is important both for computer search and for "bare hands" work. In this module, we will learn various techniques for showing that an object exists and that an object is optimal among all other objects. As usual, we'll practice solving many interactive puzzles. We'll show also some computer programs that help us to construct an example.
Name:Recursion and Induction
Description:We'll discover two powerful methods of defining objects, proving concepts, and implementing programs — recursion and induction. These two methods are heavily used in discrete mathematics and computer science. In particular, you will see them frequently in algorithms — for analysing correctness and running time of algorithms as well as for implementing efficient solutions. For some computational problems (e.g., exploring networks), recursive solutions are the most natural ones. The main idea of recursion and induction is to decompose a given problem into smaller problems of the same type. Being able to see such decompositions is an important skill both in mathematics and in programming. We'll hone this skill by solving various problems together.
Name:Logic
Description:Mathematical logic plays a crucial and indispensable role in creating convincing arguments. We use the rules and language of mathematical logic while writing code, while reasoning and making decisions, and while using computer programs. This week we’ll learn the basics of mathematical logic, and we'll practice tricky and seemingly counterintuitive, but yet logical aspects of mathematical logic. This will help us to write readable and precise code, and to formulate our thoughts rigorously and concisely.
Name:Invariants
Description:"There are things that never change". Apart from being just a philosophical statement, this phrase turns out to be an important idea in discrete mathematics and computer science. A property that is preserved during a process is called an invariant. Invariants are used heavily in analyzing the behavior of algorithms, programs, and other processes. Being able to find the right invariant is an important skill that we will develop together in this module.
Name:Solving a 15-Puzzle
Description:In this module, we consider a well known 15-puzzle where one needs to restore order among 15 square pieces in a square box. It turns out that the behavior of this puzzle is determined by beautiful mathematics: it is solvable if and only if the corresponding permutation is even. To understand what it means and why it is true, we will learn the basic properties of even and odd permutations — an important notion in algebra and discrete mathematics. Together, we will implement a number of simple methods for working with permutations. You will then use them as building blocks to implement a program that solves any configuration of this game in blink of an eye!
Mathematical 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: induction, recursion, logic, invariants, examples, optimality. We will use these tools to answer typical programming questions like: How can we be certain a solution exists? Am I sure my program computes the optimal answer? Do each of these objects meet the given requirements? In the online course, we use a try-this-before-we-explain-everything approach: you will be solving many interactive (and mobile friendly) puzzles that were carefully designed to allow you to invent many of the important ideas and concepts yourself. Prerequisites: 1. We assume only basic math (e.g., we expect you to know what is a square or how to add fractions), common sense and curiosity. 2. Basic programming knowledge is necessary as some quizzes require programming in Python.