Chevron Left
Back to Algorithms, Part I

Learner Reviews & Feedback for Algorithms, Part I by Princeton University

8,497 ratings
1,752 reviews

About the Course

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms. All the features of this course are available for free. It does not offer a certificate upon completion....

Top reviews

May 31, 2017

This is a great class. I learned / re-learned a ton. The assignments were challenge and left a definite feel of accomplishment. The programming environment and automated grading system were excellent.

Jun 2, 2018

Good contents and the logic of the whole course structure is very clear for a novice like me. The weekly homework is also awesome. Would recommend to anyone who wants to learn about computer science.

Filter by:

1 - 25 of 1,690 Reviews for Algorithms, Part I

By Sai

Jun 5, 2017

I am a bit dissapointed for the fact that this forces people to code in Java. Need to provide flexibility for someone coming from C/C++/Python who are well versed and can code in those. It becomes more of programming hurdle than logic implementation.

By Eduardo C C

Feb 13, 2020

Everybody should take and learn from this and the algorithms II courses, both are awesome. Why?, because you will learn a lot of skills beyond the algorithms taught in the course, (which by the way are all awesome, for example, you will learn to implement the kd-tree algorithm and also how it is used for computer graphic acceleration and how it's implemented in the famous machine learning algorithm k-NN, and if you dive a little more in the material you will be able to run the famous flocking boids algorithm developed by Craig Reynolds in the field of artificial life)

By working on the project assignments, you will learn by doing the best practices in OOP, coding style and documentation writing. And most importantly, you will gain the skills necessary to think algorithmically to effectively solve hard problems and how to write fast and memory-efficient code. All those skills will be very useful when you work on your own projects.

Also, you will understand why a good algorithm worths much more than a supercomputer and the importance of its study, because knowing about algorithms will make you able to answer questions like: how do I know if the algorithm I'm writing is the best option available to solve this kind of problem?, Does my algorithm scale well with the size of the problem I'm trying to solve? and much more. After completing this course you will be able to answer all these very important questions and you will have the right skill set to tackle real-world problems. Definitely this and the algorithms II courses are among the bests courses in the world available in CS and you can take both for free!!!!

By Oleksii M

Apr 7, 2017

Even though there is a lot of useful information in this course, I personally don’t like it. I wouldn’t take this course again if I had a chance to go back in time.

All hometasks are much more about programing in Java than algorithms. Open any week's discussion forum, you will find out that 90% questions and problems are about Java, not algorithms. If you are not a professional programer, you will spend at least 30-40 hours a weak instead of 6-10 hours.

5 week’s task is just a pure joke: 30 minutes explanation about most difficult structure in the course and not a single line of code.. After that you must write it by yourself. Just look at week 5 discussion forum. Do you know why there are 42 topics in week 3 and only 7 in week 5? Because people decide not to do it.

The goal of a teacher must be to make students love the course\matherial\science, not to hate it. I’m not sure about hating, but it was annoying as hell.

By Maruf H

Jan 2, 2019

I've completed both Part I and Part II. So my review belongs to two of the courses.

I took this course to gain a better understanding of data structures and algorithms and also to learn more about the Java language.

Best way to learn algorithms is through visualization. In this course, Professor Sedgewick slowly but steadily presents each algorithm and data structure with dynamic visualization. The animations really help to clarify exactly how the algorithms process the data and solve a problem.

Another important aspect is that this course discusses the implementation details of the algorithms by using Java programming language. They developed a java library where almost all the algorithms in a traditional algorithm text-book have been implemented. It's really satisfying to read such nice, concise and elegant code.

I started this course with an intermediate level of knowledge on Java. That's why it was pretty easy for me to keep pace with the implementation challenges. However, I learn and apply many java specific technique such as generics, iterator, object equality, immutability, testing etc. in-depth in this course. From my experience, I would recommend, to get the most out of the course, you should have a little bit of programming experience in Java.

In order to pass the course, you have to complete a programming assignment in each week. The assignments are well written, pretty much challenging and fun to solve. You will get the feelings to solve large-scale complex problems. They expect you to spend 3-5 hours for an assignment to pass (80%) each assignment. However, I lost track of how much time I spent to chase the benchmarks for 100% in each assignment. You will definitely have a challenging time to score 100%.

The evaluation system of the assignment is very sensitive. You have to maintain a prescribed API, otherwise, your solution will not be accepted. I wonder about their effort, how much time they spend to make such unit testing code. In some cases, I see that they wrote 1200-1500 lines of unit testing code to check our only 200-300 lines of solution, definitely praiseworthy!

Overall, this was a great course and it was a great opportunity for me to take such an enriched algorithm course. I highly recommend it to every serious programmer who wants to learn more about data structures, algorithms, and the Java language.

By Robert M

Jun 1, 2017

This is a great class. I learned / re-learned a ton. The assignments were challenge and left a definite feel of accomplishment. The programming environment and automated grading system were excellent.

By Bosheng J

Jun 3, 2018

Good contents and the logic of the whole course structure is very clear for a novice like me. The weekly homework is also awesome. Would recommend to anyone who wants to learn about computer science.

By Keith N

Apr 4, 2018

Ridiculous first assignment, and while they say Java is a minor thing, actually they are overly invested in Java.

By Ping Z T

Nov 3, 2019

Not user friendly for starting the programming assignment. Almost no guidance to start the Programming assignment.

By Reuben P

Jun 10, 2017

Incredible learning experience. Every programmer in industry should take this course if only to dispel the idea that with the advent of cloud computing exponential algorithms can still ruin your day!

By Jack

Oct 23, 2019

Great course. It's both a Java programming course and an algorithms course that focuses on data structures. There is some mathematical analysis and proofs, but they are hand wavy and not the core of the course. The assignments are very fun, they are typically visual and require the use of that week's material to solve a clever application (usually you just use the code developed instead of coding it from scratch, but occasionally will have to implement your own) - they can take between 4-12 hours to do. Lectures provide excellent animations and motivations that walk you through different algorithms and help you visualize the results as well as help you appreciate why they matter. Along the way you'll develop your Java skills by learning about some of the features of the language.

To succeed you should know basic Java, up to interfaces, generics, iterators, and basic command line arguments, recursion, and how to implement classic ADTs like stacks, queues, linked lists, (maybe binary search trees as well). These things are reviewed, but there isn't much in the way of exercises or assignments to reinforce the ideas, so it isn't meant as a first exposure. A lot of learners come to this course already knowing the material and using this as a refresher. That wasn't the case with me, this was my first time seeing things like hashing and balancing trees, and it was all very approachable. I would say the difficulty is at the level of a second year university course. The assignments also give really good feedback not just of tricky corner cases and correctness, but stylistic changes to improve your code. This feedback is as though you had a human walk by line by line in your code and point out bugs and stylistic errors. By the end you'll not only improve your algorithmic thinking by directly working with the results in your code, but you'll also become a better Java programmer and get practice with abstract interfaces such as Comparators and Iterators.

Looking forward to Part 2!


Nov 1, 2016

Extremely well designed course. The assignments touch all the concepts taught in the class. Lot of concepts get clarified when you try to reach 100% on each assignment. Highly recommend this course.

By Adrian S

Oct 20, 2019

Sometimes very cumbersome and hard to understand requirements,

the way the auto-grading software is set up causes failing tests while locally the same tests may pass.

Say there are 2 classes A, B, and B uses A. The auto-grader runs tests on classes A and B, the auto-grader will say all tests on A passed, but when proceeding to run tests on B, it will not use your original A class (!!) but instead will inject another A class that works in a different way that your A - all tests passed class. (week 3).

So how would one fix his homework in an ethical manner ?

By 赵志勇

Nov 29, 2018


By Pavel P

Apr 26, 2020

Course itself is very interesting, but assignments design is really poor: a lot of unnecessary edge cases that are not related to algorithms, missed parts of specifications, false-positive error reports etc. The most part of work that I have done on assignments is not related to learned algorithms.

By Rui L

Aug 24, 2019

I am so disappointed by this course, the teacher seems sleepy! without any spirit! Which makes me hard to follow!! Although the PPT is good.

By Ian K

Mar 10, 2017

Excellent course. As an engineering grad who has only done scientific programming in the past, this course really got me thinking about programming in a different way. I had no experience with Java before taking this course, and it was very doable having had mostly only Python and Matlab experience previously. However, if you do not have Java experience, I highly recommend learning basic Java structure and syntax before starting. The course recommends the Duke Object Oriented Programming course, but when I tried it, I found it confusing, slow, and unhelpful from the get go. This web page ended up working great for me because of my background in Python: Also, I highly, highly recommend downloading a Java IDE (I used Netbeans).

By Nathanael Y

Feb 14, 2019

Simply awesome, the slides, lecture and assignments are very good. The assignments are challenging and difficult, but just enough for you to finish them and improve yourself. I would definitely recommend this course to every programmer I know.

By clayton w

Mar 16, 2019

Want to listen to a boring old man incoherently mumble and say "UM" every 5-10 words? This course is definitely for you!

By Don S

Mar 4, 2020

This is a fantastic course!

I already have a degree in computer science, so I was familiar with most of the algorithm and data structure concepts taught in this course, but I wanted to gain mastery of these core concepts and this course has helped me towards achieving that goal. What I found particularly helpful is the way the course seems to teach the concepts from first principles, in effect building algorithms and data structures from scratch in Java.

Also, the programming assignments were all fascinating to do, covering a range of application domains.

I also purchased the book that accompanies the course, and the book is also of excellent quality and was an invaluable resource for understanding the course content and for progressing through the programming assignments (especially when I got stuck on a tough part).

I would also say that there is a very cool theme running through the course, that of "brains over brawn", i.e. that clever algorithms can still make massive huge and important improvements to applications even though in this day and age we now have an abundance of memory and processing power at our disposal.

Thank you Robert Sedgewick and Kevin Wayne for sharing your very high quality course with the world.

I am off to start Part II now...

By Manoj K

Feb 17, 2019

Excellent course material, including the programing assignments.

I wish there were additional programming assignments spanning more topics from the course (shorter ones in addition to those in this course).

By Kamenskyi S

Feb 3, 2019

The most interesting and compelling course on Coursera. The autograde java program is awesome!!!!

By Tao Z

Jan 1, 2019


By Derevyanko N S

Feb 23, 2019

Курс рекомендую для людей которые совсем далеки от алгоритмов и хотят начать в них разбираться. Если вы уже имеете представления о том как оценивать сложность алгоритма и знаете хоть какие-то структуры данных, то этот курс будет слишком легким и мало что нового вы из него узнаете. Лучше начните сразу со второй части этого курса.

By Sonja B

Jul 16, 2017

Everything about this course is excellent.

Learning about algorithms and their applications in real life was fascinating, and the assignments serve as a tool for deeper understanding of the week's theory. The course is by no means too easy and keeps challenging you week by week with more fun concepts and exciting results when you finally pass the weekly assignment. The way that the assignments are laid out is super clear and the forums are also very helpful if you do get stuck, nothing beats a direct answer from the lecturer or assistants. Coming from an engineering background, I really liked how thorough the testing was for the assignments, since this was a new process to me. Simply having an algorithm that "mostly works" won't suffice, by the end of the assignment you really feel like you've accomplished something. Many thanks to the lecturers and assistants who made this course.

1000% would recommend.

By Dave

Feb 15, 2019

I am so grateful for this course. I had to practice Java, which is something I haven't done in years. I loved the historical explanation behind red-black trees. Especially, I loved the tasks .. they were very difficult, engaging and it felt so good after finishing them :) . Thank you very much for the effort and the well-crafted material.