Chevron Left
Back to Algorithms, Part I

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

4.9
stars
11,100 ratings

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

RM

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.

RP

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!

Filter by:

1 - 25 of 2,223 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 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 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 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 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 Robert M

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.

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 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 Ping Z

Nov 3, 2019

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

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 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!

By Adam K

Feb 4, 2022

BE WARNED...not for the faint of heart.

I graduated top 10% of my class for both BS and MS in EE from the University of Florida, and led a startup to a successful acquisition.(Although I have limited programming experience)

I have done hard things, and this course is TOUGH.You will be challenged, and you will learn.

This course is really a high-level overview/summary, and requires lots of self-resourced learning.It essentially shows you what you need to learn, provides an overview, and then provides a very challenging assignment.

There are many characteristics of this course that are frustrating, and some even "bad".If I had to pay significantly for this course, I would have given it 2 stars.

(I believe many of the other reviews may be from students who did NOT complete the assignments themselves.)

That said, it is still a good course, and worth taking.

First, some positives:

- This course is FREE.It is INCREDIBLE to have access to these learning resources at no cost.

- The instructor truly is an expert in the field, and very clearly presents the material.

- This course covers a wider breadth of topics than other Algorithm & Data Structure courses.

- There are automated tests for each assignment, so you can test your code, and to a high level.

And now, for the WARNINGS:

- The time estimates for the assignments are laughably WRONG.NO reasonable student could complete the assignments in 8 hours.Bet on closer to 3-5 days working full time (24-40 hours), maybe more, for each. Even the online TAs say that the assignments took them days to complete.

- The assignment descriptions are NOT complete.You will complete everything listed in the assignment specification, and then still fail some of the automated tests, as they impose additional requirements and test things not mentioned in the spec.Use the forums and FAQs for insight into the additional requirements.

- The lectures included in this course provide very helpful summaries, but do NOT thoroughly cover all material.You do NOT get access to all the lectures from the equivalent course at Princeton, only a select and abbreviated subset.The content of the lectures is very good, but the presentation is extremely dry. Dr. Sedgewick is a capable man, but not an inspiring or entertaining presenter (in these lectures, at least).

- You will have to do LOTS of self-learning from other sources to complete the assignments.I strongly recommend buying the textbook.It helped me incredibly after I finally chose to buy it.

- This course DOES require Java-specific competency, despite its claims.Over 100 pages of the textbook are devoted to specific intricacies of Java.I was not familiar with Java and had to spend more than 1 week (40-50 hours) learning Java before I could even start the course assignments. I then spent at least an additional week (40+ hours) learning the more advanced Java features this course requires: Generics, custom Iterators, custom “Comparable” and “Comparator” interfaces, etc.So, add that to your time estimates for this course if you are not already competent in Java.

I want to give a sincere thanks to the TA(s) who are still very actively involved on the forums!

Over 15 years on, I would say this is still a good course.If you want to learn Algorithms, this is a good option.

By gk

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 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 Pavel

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 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: http://interactivepython.org/runestone/static/java4python/index.htm. Also, I highly, highly recommend downloading a Java IDE (I used Netbeans).

By Zhiyong Z

Nov 29, 2018

评分系统太棒了,老爷子讲的也真的是好,课件和学校用的真不一样,太用心了

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 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 chandra s

Oct 27, 2021

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 Kamenskyi S

Feb 3, 2019

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

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 Mohamed D

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.