# Coursera: Algorithms I & II

## 课程简介

- 所属大学：Princeton
- 先修要求：CS61A
- 编程语言：Java
- 课程难度：🌟🌟🌟
- 预计学时：60 小时

这是 [Coursera](https://www.coursera.org) 上评分最高的算法课程。Robert Sedgewick 教授有一种魔力，可以将无论多么复杂的算法讲得极为生动浅显。实不相瞒，困扰我多年的 KMP 以及网络流算法都是在这门课上让我茅塞顿开的，时隔两年我甚至还能写出这两个算法的推导与证明。

你是否觉得算法学了就忘呢？我觉得让你完全掌握一个算法的核心在于理解三点：

- 为什么这么做？（正确性推导，抑或是整个算法的核心本质）
- 如何实现它？（光学不用假把式）
- 用它解决实际问题（学以致用才是真本事）

这门课的构成就非常好地契合了上述三个步骤。观看课程视频并且阅读教授的[开源课本](https://algs4.cs.princeton.edu/home/)有助于你理解算法的本质，让你也可以用非常
生动浅显的话语向别人讲述为什么这个算法得长这个样子。

在理解算法之后，你可以阅读教授对于课程中讲授的所有数据结构与算法的[代码实现](https://algs4.cs.princeton.edu/code/)。
注意，这些实现可不是 demo 性质的，而是工业级的高效实现，从注释到变量命名都非常严谨，模块化也做得相当好，是质量很高的代码。我从这些代码中收获良多。

最后，就是这门课最激动人心的部分了，10 个高质量的 Project，并且全都有实际问题的背景描述，丰富的测试样例，自动的评分系统（代码风格也是评分的一环）。让你在实际生活中
领略算法的魅力。

## 课程资源

- 课程网站：[Algorithm I](https://www.coursera.org/learn/algorithms-part1), [Algorithm II](https://www.coursera.org/learn/algorithms-part2)
- 课程视频：详见课程网站
- 课程教材：<https://algs4.cs.princeton.edu/home/>
- 课程作业：10个Project，具体要求详见课程网站

## 资源汇总

@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Princeton-Algorithm - GitHub](https://github.com/PKUFlyingPig/Princeton-Algorithm) 中。
