# 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](https://www.coursera.org), 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](https://algs4.cs.princeton.edu/home/) 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](https://algs4.cs.princeton.edu/code/) 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](https://www.coursera.org/learn/algorithms-part1), [Algorithm II](https://www.coursera.org/learn/algorithms-part2)
- Recordings: [Coursera: Algorithm I](https://www.coursera.org/learn/algorithms-part1), [Coursera: lgorithm II](https://www.coursera.org/learn/algorithms-part2), [CUvids: Algorithms, 4th Edition](https://cuvids.io/app/course/2/)
- Textbooks: [Algorithms, 4th Edition](https://algs4.cs.princeton.edu/home/)
- 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](https://github.com/PKUFlyingPig/Princeton-Algorithm).
