add maths course

This commit is contained in:
zhongyinmin
2021-12-11 18:07:37 +08:00
parent 8f8e585b01
commit 6c6c86d277
9 changed files with 133 additions and 5 deletions

View File

@@ -34,10 +34,43 @@ under construction.
以下课程类别中除了含有`基础``入门`字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。
### 数学基础
#### 微积分与线性代数
作为大一新生学好微积分线代是和写代码至少同等重要的事情相信已经有无数的前人经验提到过这一点但我还是要不厌其烦地再强调一遍学好微积分线代真的很重要你也许会吐槽这些东西岂不是考完就忘那我觉得你是并没有把握住它们本质对它们的理解还没有达到刻骨铭心的程度。如果觉得老师课上讲的内容晦涩难懂不妨参考MIT的[Calculus Course](./数学基础/MITmaths.md)和[18.06: Linear Algebra](./数学基础/MITLA.md)的课程notes至少于我而言它帮助我深刻理解了微积分和线性代数的许多本质。顺道再安利一个油管数学网红[**3Blue1Brown**](https://www.youtube.com/c/3blue1brown),他的频道有很多用生动形象的动画阐释数学本质内核的视频,兼具深度和广度,质量非常高。
#### 信息论入门
作为计算机系的学生及早了解一些信息论的基础知识我觉得是大有裨益的。但大多信息论课程都面向高年级本科生甚至研究生对新手极不友好。而MIT的[6.050J: Information theory and Entropy](./数学基础/information.md)这门课正是为大一新生量身定制的,几乎没有先修要求,涵盖了编码、压缩、通信、信息熵等等内容,非常有趣。
### 数学进阶
#### 离散数学与概率论
集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。
[UCB CS70 : discrete Math and probability theory](./数学进阶/CS70.md)和[UCB CS126 : Probability theory](./数学进阶/CS126.md)是UC Berkeley的概率论课程前者覆盖了离散数学和概率论基础后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合有丰富的算法实际运用实例后者还有大量的Python编程作业来让学生运用概率论的知识解决实际问题。
#### 数值分析
作为计算机系的学生培养计算思维是很重要的实际问题的建模、离散化计算机的模拟、分析是一项很重要的能力。而这两年开始风靡的由MIT打造的[Julia](https://julialang.org/)编程语言以其C一样的速度和Python一样友好的语法在数值计算领域有一统天下之势MIT的许多数学课程也开始用Julia作为教学工具把艰深的数学理论用直观清晰的代码展示出来。
[ComputationalThinking](https://computationalthinking.mit.edu/Spring21/)是MIT开设的一门计算思维入门课所有课程内容全部开源可以在课程网站直接访问。这门课利用Julia编程语言在图像处理、社会科学与数据科学、气候学建模三个topic下带领学生理解算法、数学建模、数据分析、交互设计、图例展示让学生体验计算与科学的美妙结合。内容虽然不难但给我最深刻的感受就是科学的魅力并不是故弄玄虚的艰深理论不是诘屈聱牙的术语行话而是用直观生动的案例用简练深刻的语言让每个普通人都能理解。
上完上面的体验课之后如果意犹未尽的话不妨试试MIT的[18.330 : Introduction to numerical analysis](./数学进阶/numerical.md)这门课的编程作业同样会用Julia编程语言不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材[Fundamentals of Numerical Computation](studyh5.zhihuishu.com/videoStudy.html#/studyVideo?recruitAndCourseId=425a5f5a43524258454a58595e465144)里面附有丰富的Julia代码实例和严谨的公式推导。
如果你还意犹未尽的话还有MIT的研究生课程[18.335: Introduction to numerical method](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)供你参考。
#### 微分方程
如果世间万物的运动发展都能用方程来刻画和描述这是一件多么酷的事情呀虽然几乎任何一所学校的CS培养方案中都没有微分方程相关的必修课程但我还是觉得掌握它会赋予你一个新的视角来审视这个世界。
由于微分方程中往往会用到很多复变函数的知识,所以大家可以参考[MIT18.04: Complex variables functions](https://ocw.mit.edu/courses/mathematics/18-04-complex-variables-with-applications-spring-2018/)的课程notes来补齐先修知识。
[MIT18.03: differential equations](https://ocw.mit.edu/courses/mathematics/18-03sc-differential-equations-fall-2011/unit-i-first-order-differential-equations/)主要覆盖了常微分方程的求解,在此基础之上[MIT18.152: Partial differential equations](https://ocw.mit.edu/courses/mathematics/18-152-introduction-to-partial-differential-equations-fall-2011/index.htm)则会深入偏微分方程的建模与求解。掌握了微分方程这一有利工具,相信对于你的实际问题的建模能力以及从众多噪声变量中把握本质的直觉都会有很大帮助。
### 数学高阶
作为计算机系的学生,我经常听到数学无用论的论断,对此我不敢苟同但也无权反对,但若凡事都硬要争出个有用和无用的区别来,倒也着实无趣,因此下面这些面向高年级甚至研究生的数学课程,大家按兴趣自取所需。
#### 凸优化
[Standford EE364A: Convex Optimization](./数学进阶/convex.md)
#### 信息论
[MIT6.441: Information Theory](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-441-information-theory-spring-2016/syllabus/)
#### 应用统计学
[MIT18.650: Statistics for Applications](https://ocw.mit.edu/courses/mathematics/18-443-statistics-for-applications-spring-2015/index.htm)
#### 初等数论
[MIT18.781: Theory of Numbers](https://ocw.mit.edu/courses/mathematics/18-781-theory-of-numbers-spring-2012/index.htm)
#### 密码学
[Standford CS255: Cryptography](http://crypto.stanford.edu/~dabo/cs255/)
### 编程入门
### 系统入门

View File

@@ -6,7 +6,7 @@
- 课程难度:🌟🌟🌟
- 预计学时:因人而异
数学大牛`Gilbert Strang`老先生年逾古稀仍坚持授课,其经典教材[`Introduction to Linear Algebra`](https://math.mit.edu/~gs/linearalgebra/)已被清华采用为官方教材。写得非常好,吊打国内一众公式堆砌的线代教材。我当时看完盗版PDF之后深感愧疚含泪花了两百多买了一本英文正版收藏。下面附上此书封面如果你能完全理解封面图的数学含义那你对线性代数的理解一定会达到新的高度。
数学大牛`Gilbert Strang`老先生年逾古稀仍坚持授课,其经典教材[`Introduction to Linear Algebra`](https://math.mit.edu/~gs/linearalgebra/)已被清华采用为官方教材。我当时看完盗版PDF之后深感愧疚含泪花了两百多买了一本英文正版收藏。下面附上此书封面如果你能完全理解封面图的数学含义那你对线性代数的理解一定会达到新的高度。
![image](https://math.mit.edu/~gs/linearalgebra/linearalgebra5_Front.jpg)
配合油管数学网红**3Blue1Brown**的[线性代数的本质](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)系列视频食用更佳。

View File

@@ -3,10 +3,10 @@
- 所属大学MIT
- 先修要求:英语
- 编程语言:无
- 课程难度:🌟🌟🌟
- 课程难度:🌟🌟
- 预计学时:因人而异
MIT的微积分课由`MIT18.01: Single variable calculus``MIT18.02: Multi variable calculus`两门课组成。对自己数学基础比较自信的同学可以只看课程notes写得非常浅显生动并且抓住本质让你不再疲于做题而是能够真正窥见微积分的本质美丽
MIT的微积分课由`MIT18.01: Single variable calculus``MIT18.02: Multi variable calculus`两门课组成。对自己数学基础比较自信的同学可以只看课程notes写得非常浅显生动并且抓住本质让你不再疲于做题而是能够真正窥见微积分的本质魅力
配合油管数学网红**3Blue1Brown**的[微积分的本质](https://www.youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr)系列视频食用更佳。

View File

@@ -0,0 +1,23 @@
# UCB CS126 : Probability theory
## 课程简介
- 所属大学UC Berkeley
- 先修要求CS70、微积分、线性代数
- 编程语言Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时100小时
伯克利的概率论进阶课程,涉及到统计学、随机过程等理论相对深入的内容,需要相当的数学基础,我在上这门课的时候也感到有些吃力,不过坚持下来一定会让你对概率论的掌握达到一个新的高度。
同时这门课非常强调理论与实践的结合课程设计者Jean Walrand教授专门写了一本配套的教材[Probability in Electrical Engineering and Computer Science](https://link.springer.com/book/10.1007/978-3-030-49995-2)书中每个章节都会以一个具体的算法实践作为例子来展示理论在实际当中的运用例如PageRankRoute PlaningSpeech Recognition等等并且全书开源可以免费下载PDF或者Epub版。
这还不算完Jean Walrand还为整本书里的例子设计了配套的Python实现以[Jupyter Notebook](https://jeanwalrand.github.io/PeecsJB/intro.html)的形式在线发布,读者可以在线修改、调试和运行。
与此同时这门课除了理论作业之外还有9个编程作业会让你用概率论的知识解决实际问题。
## 课程资源
- [课程网站](https://inst.eecs.berkeley.edu/~ee126/fa20/content.html)
- 课程教材:[PDF](https://link.springer.com/content/pdf/10.1007%2F978-3-030-49995-2.pdf), [Epub](https://link.springer.com/download/epub/10.1007%2F978-3-030-49995-2.epub), [Jupyter Notebook](https://jeanwalrand.github.io/PeecsJB/intro.html)
- 课程作业14个书面作业 + 9个编程作业具体要求参见课程网站。
## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/EECS126)中。

27
docs/数学进阶/CS70.md Normal file
View File

@@ -0,0 +1,27 @@
# UCB CS70 : discrete Math and probability theory
## 课程简介
- 所属大学UC Berkeley
- 先修要求:无
- 编程语言:无
- 课程难度:🌟🌟🌟
- 预计学时60小时
伯克利的离散数学入门课程,个人觉得这门课最大的亮点在于并不是单纯的理论知识的讲授,而是在每个模块都会介绍理论知识在实际算法中的运用,让计算机系的学生在夯实理论基础的同时,跳脱出冰冷形式化的数学符号,在实际应用中感受和体会理论的本质。
具体的理论与算法的对应关系列举如下:
- 逻辑证明:稳定匹配算法
- 图论:网络拓扑设计
- 基础数论RSA算法
- 多项式环:纠错码设计
- 概率论:哈希表设计、负载均衡等等
课程notes也写得非常深入浅出公式推导与实际例子星罗棋布阅读体验很好。
## 课程资源
- [课程网站](http://www.eecs70.org/)
- 课程教材参见课程notes
- 课程作业参见课程schedule
## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/UCB-CS70)中。

View File

@@ -0,0 +1,19 @@
# Standford EE364A: Convex Optimization
## 课程简介
- 所属大学Stanford
- 先修要求Python微积分线性代数概率论数值分析
- 编程语言Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150小时
[Stephen Boyd](http://web.stanford.edu/~boyd)教授是凸优化领域的大牛,其编写的**Convex Optimization**这本教材被众多名校采用。另外其研究团队还专门开发了一个用于求解常见凸优化问题的编程框架支持PythonJulia等主流编程语言其课程作业也是采用这个编程框架去解决实际生活当中的凸优化问题。
在实际运用当中,你会深刻体会到对于同一个问题,建模过程中一个细小的改变,其方程的求解难度会有天壤之别,如何让你建模的方程是“凸”的,是一门艺术。
## 课程资源
- [课程网站](http://stanford.edu/class/ee364a/index.html)
- [课程视频](https://www.bilibili.com/video/BV1aD4y1Q7aW?from=search&seid=2893330311625925731&spm_id_from=333.337.0.0)
- 课程教材:[Convex Optimization](https://stanford.edu/~boyd/cvxbook/)
- 课程作业9个Python编程作业
## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/Standford_CVX101)中。

View File

@@ -0,0 +1,20 @@
# MIT18.330 : Introduction to numerical analysis
## 课程简介
- 所属大学MIT
- 先修要求:微积分,线性代数,概率论
- 编程语言Julia
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150小时
计算机强大的计算能力帮助人们在科学领域不断突破边界,不过计算机的离散本质和这个连续的世界有着天然鸿沟,而如何用离散的表示去估计和逼近那些数学上连续的概念,则是数值分析的重要主题。
这门课会在浮点表示、方程求解、线性代数、微积分、线性代数、微分方程等领域探讨各类数值分析方法让你在Julia的编程实践中反复体悟1如何建立估计2如何估计误差3如何用算法实现估计 这一系列步骤。
这门课的设计者还编写了配套的开源教材参见下方链接里面有丰富的Julia实例。
## 课程资源
- [课程网站](https://github.com/mitmath/18330)
- [课程教材](https://fncbook.github.io/fnc/frontmatter.html)
- 课程作业10个Julia编程作业
## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/MIT18.330)中。

View File

@@ -14,8 +14,14 @@ nav:
- Latex: '必学工具/Latex.md'
- 实用工具箱: '必学工具/tools.md'
- 数学基础:
- 'MIT Calculus Course': '数学基础/MITmaths.md'
- 'MIT Linear Algebra': '数学基础/MITLA.md'
- 'MIT18.01/18.02: Calculus': '数学基础/MITmaths.md'
- 'MIT18.06: Linear Algebra': '数学基础/MITLA.md'
- 'MIT6.050J: Information theory and Entropy': '数学基础/information.md'
- 数学进阶:
- 'UCB CS70: discrete Math and probability theory': '数学进阶/CS70.md'
- 'UCB CS126: probability theory': '数学进阶/CS126.md'
- 'MIT18.330: Introduction to numerical analysis': '数学进阶/numerical.md'
- 'Standford EE364A: Convex Optimization': '数学进阶/convex.md'
- 编程入门:
- MIT-Missing-Semester: '编程入门/MIT-Missing-Semester.md'
- 'Harvard CS50: This is CS50x': '编程入门/CS50.md'