Coursera: Algorithms I & II
课程简介
- 所属大学:Princeton
- 先修要求:CS61A
- 编程语言:Java
- 课程难度:🌟🌟🌟
- 预计学时:60 小时
这是 Coursera 上评分最高的算法课程。Robert Sedgewick 教授有一种魔力,可以将无论多么复杂的算法讲得极为生动浅显。实不相瞒,困扰我多年的 KMP 以及网络流算法都是在这门课上让我茅塞顿开的,时隔两年我甚至还能写出这两个算法的推导与证明。
你是否觉得算法学了就忘呢?我觉得让你完全掌握一个算法的核心在于理解三点:
- 为什么这么做?(正确性推导,抑或是整个算法的核心本质)
- 如何实现它?(光学不用假把式)
- 用它解决实际问题(学以致用才是真本事)
这门课的构成就非常好地契合了上述三个步骤。观看课程视频并且阅读教授的开源课本有助于你理解算法的本质,让你也可以用非常 生动浅显的话语向别人讲述为什么这个算法得长这个样子。
在理解算法之后,你可以阅读教授对于课程中讲授的所有数据结构与算法的代码实现。 注意,这些实现可不是 demo 性质的,而是工业级的高效实现,从注释到变量命名都非常严谨,模块化也做得相当好,是质量很高的代码。我从这些代码中收获良多。
最后,就是这门课最激动人心的部分了,10 个高质量的 Project,并且全都有实际问题的背景描述,丰富的测试样例,自动的评分系统(代码风格也是评分的一环)。让你在实际生活中 领略算法的魅力。
课程资源
- 课程网站:Algorithm I, Algorithm II
- 课程视频:详见课程网站
- 课程教材:https://algs4.cs.princeton.edu/home/
- 课程作业:10个Project,具体要求详见课程网站
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/Princeton-Algorithm - GitHub 中。
Coursera: Algorithms I & II
Descriptions
- Offered by: Princeton
- Prerequisites: CS61A
- Programming Languages: Java
- Difficulty: 🌟🌟🌟
- Class Hour: 60 hours
This is the highest rated algorithms course on Coursera, and Robert Sedgewick has the magic to make even the most complex algorithms incredibly easy to understand. To be honest, the KMP and network flow algorithms that I have been struggling with for years were made clear to me in this course, and I can even write derivations and proofs for both of them two years later.
Do you feel that you forget the algorithms quickly after learning them? I think the key to fully grasping an algorithm lies in understanding the three points as follows:
- Why should do this? (Correctness derivation, or the essence of the entire algorithm.)
- How to implement it? (Talk is cheap. Show me the code.)
- How to use it to solve practical problems? (Bridge the gap between theory and real life.)
The composition of this course covers the three points above very well. Watching the course videos and reading the professor's textbook will help you understand the essence of the algorithm and allow you to tell others why the algorithm should look like this in very simple and vivid terms.
After understanding the algorithms, you can read the professor's code implementation of all the data structures and algorithms taught in the course. Note that these codes are not demos, but production-ready, time-efficient implementations. They have extensive annotations and comments, and the modularization is also quite good. I learned a lot by just reading the codes.
Finally, the most exciting part of the course is the 10 high-quality projects, all with real-world backgrounds, rich test cases, and an automated scoring system (code style is also a part of the scoring). You'll get a taste of algorithms in real life.
Course Resources
- Course Website: Algorithm I, Algorithm II
- Recordings: Coursera: Algorithm I, Coursera: lgorithm II, CUvids: Algorithms, 4th Edition
- Textbooks: Algorithms, 4th Edition
- Assignments: 10 Projects, the course website has specific requirements
Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/Princeton-Algorithm - GitHub.