我推荐的在线公开课

创建时间: 2024年3月18日

自从 2013 年以来,我参加了许多在线课程,在途中放弃的课程更多。总体上我认为在线课程比看书更加适合自学。

在这篇文章中,我整理了一份我觉得对我印象深刻的课程清单。我的选择无疑偏向于我的个人兴趣,但我希望你也能觉得它们有用。

需要注意的是,我推荐的一些课程并非慕课(大规模开放在线课堂)而是普通的大学课程。这些课程可能在某些年份将课程资料上传至网上,但之后就不再公开。因此,您可能需要花一些时间来搜索这些课程材料。

另外一点是我这里推荐的课程不一定有中文字幕,在这里对英语不好的朋友们表示抱歉。

学习方法论

  • Learning How to Learn — 我觉得学习能力是一种大多数人,包括我自己在内,都缺乏的能力。一些人可能会觉得这个课程提供的建议都是常识。但是问题是你在生活中往往可以听到各种自相矛盾的“常识”,而我们缺乏区别有效建议与有害建议的能力。这门课恰恰用科学来试图补足这个问题。

数学

微积分

线性代数

  • MIT OCW 线性代数作为主要课程 — 如果你花了一些时间在线学习数学,那么很可能你已经听过 Gilbert Strang 教授的鼎鼎大名。

微分方程

离散数学

信号处理

逻辑学

  • 斯坦福大学的Introduction to Logic — 我在大时修过一门扎实的逻辑学入门课程,但这门课仍然介绍了许多新概念,或者从全新的角度解释了熟悉的内容。

计算机科学以及编程

入门

  • 斯坦福大学的CS106A106B、以及106L — 我以前是通过自学这系列课程入门的计算机科学。我当年学习的 2008 年版本以现在的标准来看已经过时了,但是在网上还可以找到这个课程的更新版。

计算机图形学和 GPU 编程

编程语言与编译器

  • 华盛顿大学的编程语言[Part A] [Part B] [Part C] — 这是一个关于编程语言的三部分课程。与我在大学学习的本科编程语言课程相比,我觉得内容相对浅显。不过我仍然觉得这是一个很好的入门,并且 Dan Grossman 教授也是一个相当好的老师。
  • 康奈尔大学的CS 6120: Advanced Compilers — 主要讲的是编译器优化

系统编程

  • CMU 15-213/15-513 计算机系统入门
    • 这门课程使用的CSAPP教材是系统编程的经典。但需要注意的是,关于 C 语言这本书存在一些严重的错误信息
      • 很长一段时间我因为这本书的关系一直以为在 C 语言中 signed integer 溢出会保证 wrapping 行为。
  • Nand2Tetris — 如果你想要一门从逻辑门一路讲到汇编语言和操作系统的导论课程,那么这门课程就是为你而设的。

其他

心理学

物理

如何找到好的公开课?

我的观察是,传统的大学课程(例如来自 MIT OCW 的课程)平均质量比慕课更高。不幸地是,大多数网上可以找到的大学课程缺乏讲座视频。另外,尽管视频课程不可或缺,辅助材料和作业也同等重要。

在慕课中个人认为CourseraEdx仍是相对比较靠谱的平台,而其他平台的课程质量更加参次不齐一些。

另一个建议是:对于那些有评论的平台上的课程,花点时间阅读 1 星和 2 星评价。虽然这些评论大多都是胡说八道,但如果你看了感觉不大对劲,那也许这门课程不适合你。同样的方法也可以用来评估一本书是否值得阅读。

个人不推荐的一些高分课程

与大学课程类似,我参加过的大多数在线课程都让人感到失望。绝大多数平庸的课程我都不大有印象了,以下是一些我至今仍然记忆犹新的一些我认为特别有问题的课程。

  • 卫斯理安大学的社会心里学 — 这门课讲了许多许多夸大其次的说法和现在被证明错误的理论,例如“电子游戏导致暴力”。它还引用了诸如斯坦福监狱实验和米尔格拉姆实验之类的具有争议的研究。

  • 爱丁堡大学的乐理基础 — 课程简单过头,然后考试完全超纲。