CS自学指南-数学进阶

UCB CS70 : discrete Math and probability theory
课程简介
- 所属大学:UC Berkeley
- 先修要求:无
- 编程语言:无
伯克利的离散数学入门课程,个人觉得这门课最大的亮点在于并不是单纯的理论知识的讲授,而是在每个模块都会介绍理论知识在实际算法中的运用,让计算机系的学生在夯实理论基础的同时,跳脱出冰冷形式化的数学符号,在实际应用中感受和体会理论的本质。
具体的理论与算法的对应关系列举如下:
- 逻辑证明:稳定匹配算法
- 图论:网络拓扑设计
- 基础数论:RSA 算法
- 多项式环:纠错码设计
- 概率论:哈希表设计、负载均衡等等
课程 notes 也写得非常深入浅出,公式推导与实际例子星罗棋布,阅读体验很好。
课程资源
- 课程网站:http://www.eecs70.org/
- 课程教材:参见课程 notes
- 课程作业:参见课程 Schedule
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/UCB-CS70 - GitHub 中。
MIT6.050J: Information theory and Entropy
课程简介
- 所属大学:MIT
- 先修要求:无
- 编程语言:无
MIT 面向大一新生的信息论入门课程,Penfield 教授专门为这门课写了一本教材作为课程 notes,内容深入浅出,生动有趣。
课程资源
- 课程网站:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/index.htm
- 课程教材:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/syllabus/MIT6_050JS08_textbook.pdf
- 课程作业:详见课程网站,包含书面作业与 Matlab 编程作业。
MIT 6.042J: Mathematics for Computer Science
课程简介
- 所属大学:MIT
- 先修要求:Calculus, Linear Algebra
- 编程语言:Python preferred
MIT 的离散数学以及概率综合课程,导师是大名鼎鼎的 Tom Leighton ( Akamai 的联合创始人之一)。学完之后对于后续的算法学习大有裨益。
课程资源
- 课程网站:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/
- 课程视频:https://www.bilibili.com/video/BV1L741147VX
- 课程作业:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/assignments/
MIT18.330 : Introduction to numerical analysis
课程简介
- 所属大学:MIT
- 先修要求:微积分,线性代数,概率论
- 编程语言:Julia
计算机强大的计算能力帮助人们在科学领域不断突破边界,不过计算机的离散本质和这个连续的世界有着天然鸿沟,而如何用离散的表示去估计和逼近那些数学上连续的概念,则是数值分析的重要主题。
这门课会在浮点表示、方程求解、线性代数、微积分、微分方程等领域探讨各类数值分析方法,让你在 Julia 的编程实践中反复体悟(1)如何建立估计(2)如何估计误差(3)如何用算法实现估计 这一系列步骤。
这门课的设计者还编写了配套的开源教材(参见下方链接),里面有丰富的 Julia 实例。
课程资源
- 课程网站:https://github.com/mitmath/18330
- 课程教材:https://fncbook.github.io/fnc/frontmatter.html
- 课程作业:10 个 Julia 编程作业
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/MIT18.330 - GitHub 中。
Stanford EE364A: Convex Optimization
课程简介
- 所属大学:Stanford
- 先修要求:Python,微积分,线性代数,概率论,数值分析
- 编程语言:Python
Stephen Boyd 教授是凸优化领域的大牛,其编写的 Convex Optimization 这本教材被众多名校采用。另外其研究团队还专门开发了一个用于求解常见凸优化问题的编程框架,支持 Python, Julia 等主流编程语言,其课程作业也是采用这个编程框架去解决实际生活当中的凸优化问题。
在实际运用当中,你会深刻体会到对于同一个问题,建模过程中一个细小的改变,其方程的求解难度会有天壤之别,如何让你建模的方程是“凸”的,是一门艺术。
课程资源
- 课程网站:http://stanford.edu/class/ee364a/index.html
- 课程视频:https://www.bilibili.com/video/BV1aD4y1Q7aW
- 课程教材:Convex Optimization
- 课程作业:9 个 Python 编程作业
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/Standford_CVX101 - GitHub 中。
The Information Theory, Pattern Recognition, and Neural Networks
课程简介
- 所属大学:Cambridge
- 先修要求:Calculus, Linear Algebra, Probabilities and Statistics
- 编程语言:Anything would be OK, Python preferred
剑桥大学 Sir David MacKay 教授的信息论课程。教授是一位十分精通信息论与神经网络的学者,课程对应教材也是信息论领域的一部经典著作。可惜天妒英才...
课程资源
- 课程网站:http://www.inference.org.uk/mackay/itila/
- 课程视频:https://www.bilibili.com/video/BV1rs411T71e
- 课程教材:Information Theory, Inference, and Learning Algorithms 在课程网站可以下载到免费的电子版
- 课程作业:在每一节课视频的最后会留教材上的课后习题