CS4-数学进阶
UCB CS70: discrete Math and probability theory
课程简介
- 所属大学:UC Berkeley
- 先修要求:无
- 编程语言:无
- 课程难度:🌟🌟🌟
- 预计学时:60 小时
伯克利的离散数学入门课程,个人觉得这门课最大的亮点在于并不是单纯的理论知识的讲授,而是在每个模块都会介绍理论知识在实际算法中的运用,让计算机系的学生在夯实理论基础的同时,跳脱出冰冷形式化的数学符号,在实际应用中感受和体会理论的本质。
具体的理论与算法的对应关系列举如下:
- 逻辑证明:稳定匹配算法
- 图论:网络拓扑设计
- 基础数论:RSA 算法
- 多项式环:纠错码设计
- 概率论:哈希表设计、负载均衡等等
课程 notes 也写得非常深入浅出,公式推导与实际例子星罗棋布,阅读体验很好。
课程资源
- 课程网站:http://www.eecs70.org/
- 课程教材:参见课程 notes
- 课程作业:参见课程 Schedule
资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/UCB-CS70 – GitHub 中。
UCB CS126: Probability theory
课程简介
- 所属大学:UC Berkeley
- 先修要求:CS70、微积分、线性代数
- 编程语言:Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:100 小时
伯克利的概率论进阶课程,涉及到统计学、随机过程等理论相对深入的内容,需要相当的数学基础,我在上这门课的时候也感到有些吃力,不过坚持下来一定会让你对概率论的掌握达到一个新的高度。
同时这门课非常强调理论与实践的结合,课程设计者 Jean Walrand 教授专门写了一本配套的教材Probability in Electrical Engineering and Computer Science,书中每个章节都会以一个具体的算法实践作为例子来展示理论在实际当中的运用,例如 PageRank, Route Planing, Speech Recognition 等等,并且全书开源,可以免费下载 PDF 或者 Epub 版。
这还不算完,Jean Walrand 还为整本书里的例子设计了配套的 Python 实现,以 Jupyter Notebook 的形式在线发布,读者可以在线修改、调试和运行。
与此同时,这门课除了理论作业之外,还有 9 个编程作业,会让你用概率论的知识解决实际问题。
课程资源
- 课程网站:https://inst.eecs.berkeley.edu/~ee126/fa20/content.html
- 课程教材:PDF, Epub, Jupyter Notebook
- 课程作业:14 个书面作业 + 9 个编程作业,具体要求参见课程网站。
资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/EECS126 – GitHub 中。
MIT 6.042J: Mathematics for Computer Science
课程简介
- 所属大学:MIT
- 先修要求:Calculus, Linear Algebra
- 编程语言:Python preferred
- 课程难度:🌟🌟🌟
- 预计学时:50-70 小时
MIT 的离散数学以及概率综合课程,导师是大名鼎鼎的 Tom Leighton ( Akamai 的联合创始人之一)。学完之后对于后续的算法学习大有裨益。
课程资源
- 课程网站:spring2015, fall2010, fall2005
- 课程视频:spring2015, fall2010
- 课程作业:参考课程网站
MIT18.330: Introduction to numerical analysis
课程简介
- 所属大学:MIT
- 先修要求:微积分,线性代数,概率论
- 编程语言:Julia
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:150 小时
计算机强大的计算能力帮助人们在科学领域不断突破边界,不过计算机的离散本质和这个连续的世界有着天然鸿沟,而如何用离散的表示去估计和逼近那些数学上连续的概念,则是数值分析的重要主题。
这门课会在浮点表示、方程求解、线性代数、微积分、微分方程等领域探讨各类数值分析方法,让你在 Julia 的编程实践中反复体悟(1)如何建立估计(2)如何估计误差(3)如何用算法实现估计 这一系列步骤。
这门课的设计者还编写了配套的开源教材(参见下方链接),里面有丰富的 Julia 实例。
课程资源
- 课程网站:https://github.com/mitmath/18330
- 课程教材:https://fncbook.com
- 课程作业:10 个 Julia 编程作业
资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/MIT18.330 – GitHub 中。
Stanford EE364A: Convex Optimization
课程简介
- 所属大学:Stanford
- 先修要求:Python,微积分,线性代数,概率论,数值分析
- 编程语言:Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:150 小时
Stephen Boyd 教授是凸优化领域的大牛,其编写的 Convex Optimization 这本教材被众多名校采用。另外其研究团队还专门开发了一个用于求解常见凸优化问题的编程框架,支持 Python, Julia 等主流编程语言,其课程作业也是采用这个编程框架去解决实际生活当中的凸优化问题。
在实际运用当中,你会深刻体会到对于同一个问题,建模过程中一个细小的改变,其方程的求解难度会有天壤之别,如何让你建模的方程是“凸”的,是一门艺术。
课程资源
- 课程网站:http://stanford.edu/class/ee364a/index.html
- 课程视频:https://www.bilibili.com/video/BV1aD4y1Q7aW
- 课程教材:Convex Optimization
- 课程作业:9 个 Python 编程作业
资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/Standford_CVX101 – GitHub 中。
Cambridge: The Information Theory, Pattern Recognition, and Neural Networks
课程简介
- 所属大学:Cambridge
- 先修要求:Calculus, Linear Algebra, Probabilities and Statistics
- 编程语言:Anything would be OK, Python preferred
- 课程难度:🌟🌟🌟
- 预计学时:30-50 小时
剑桥大学 Sir David MacKay 教授的信息论课程。教授是一位十分精通信息论与神经网络的学者,课程对应教材也是信息论领域的一部经典著作。可惜天妒英才…
课程资源
- 课程网站:http://www.inference.org.uk/mackay/itila/
- 课程视频:https://www.bilibili.com/video/BV1rs411T71e
- 课程教材:Information Theory, Inference, and Learning Algorithms 在课程网站可以下载到免费的电子版
- 课程作业:在每一节课视频的最后会留教材上的课后习题
R.I.P Prof. David MacKay