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.
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 Tao Z•
by Hyun K•
Still waiting for Kevin Wayne to appear... In all seriousness, the course was incredibly tough for me (someone who is not a compsci major) but was also very rewarding. It took me 6 weeks to complete and probably around 10 hours per problem set. Kdtrees was the most interesting pset and collinear points the least (wording was slightly confusing for me).
I would like to provide the following advice for those who are struggling but really wish to complete it.
1. Go through the lectures and try to implement the data structures yourself (unless he says it's not necessary e.g. llrb tree) e.g. in week 1, I made my own QuickFind and QuickUnion class. It doesn't have to be perfect but it helps to grapple with the idea.
2. Always look at the FAQ and command line input/output example. Coupled with reading the specification clearly should clear up 90% of the issues in what you are required to implement (unless it's the collinear points pset). If still confused, reading the discussions may be helpful.
3. Try to do the psets when your brain is working at its best. Writing something half baked late in the night will probably lead you to take longer than if you hadn't written anything at all.
4. Lastly, have patience. The fact that you're struggling so much means that you have the most to gain from solving the psets. Focus on the learning gains you will get rather than the difficulty you're having right now and you'll see it's all worth it in the end.
Thank you very much for making this high quality resource publicly available at no cost.
by Natsu O•
The content was easy to understand. However, the professor is not as enthusiastic as I expected him to be, and the programming assignments are focused more on applying an already implemented data structure to a problem rather than writing algorithms from scratch.
by Justin C•
Lectures are pretty good and material is fairly well explained. Be warned that significant knowledge of Java is expected and it isn't taught here.
by YASIR P•
The course is just awesome. The course is taught by an expert in the field, and that fact reflects in the content of the course. The assignments are well designed and very involving, which helps the learner think deep, come out with a solution, improve the solution as much as possible after autograder evaluation, which is really good. That way, the learner consolidates the concept which he/she learned in the video lectures.
Also I see there are many people complaining about enforcement of the Java as the programming language for assignment submission. In my opinion, that is not a probelm at all, if you are strong in some other language, say C++, it is very easy to adapt and in the process you end up learning, not just Data Structures and Algorithms, also a new language, Java, which is a very widely used language. People should see it as a boon, since it gives double returns for your efforts. I feel very bad, because it is only because of the enforcement of Java, some people gave bad rating for the course.
WINNERS TRAIN, LOSERS COMPLAIN
Personally, I think that the assignments in this course (not in the Algs textbook) did negligible improvement in solving problem. On the other hand, writing assignments feels like doing a Java project on your own. This feels not bad since it's not easy for programming noob like me to explore and participate in projects on GitHub owing to lack of confidence : (. BTW the autograder is so awesome that it even examines your Java code style! This is pretty good for students who had learned C/C++ before to form a better code style in Java. For the videos, it's pretty good for novice (I've been confusing for a long time to find a good way to start and learn Data Structure). However, in other words, the CS knowledge taught in this course is far beyond needed. It's still necessary to drill yourself on other sites like LeetCode, and learn the relevant mathematical algorithm analysis (maybe by reading Introduction To Algorithm).
Still, I will definitely proceed with the Part 2! Genuinely appreciated, Mr. Sedgewick!
by Scott W•
All is great except that there are too many "um"s in lecture videos. But that's totally tolerable considering Professor's age.
Anyway, I've learned a lot from this course, especially those fabulous PROGRAMMING ASSIGNMENTS!
by Adam K•
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 Gavin F•
A very well made and informational course. However, it is quite difficult, specifically the projects. Even as a CS undergraduate, this really was not easy at all. This certainly also requires a lot more time dedicated to it than suggested.
Topics are interesting, explanation is boring
by Stephen L•
Endless technical issues with Java class paths and config etc, and sparse, unclear assignment specifications makes this course a inefficient use of time.
by Bhavya B•
No certificate issues after lot of hardwork
by Vaibhav P•
One of the best courses I did. I am guilty of not finishing many courses on coursera, but this one kept me hooked and motivated enough to keep coming back at regular intervals and actually finish. The actual learning from the course is more than just algorithms as we get detailed feedback on style and even some design aspects of the code we submit. The only downside of such depth assessment review system is that we are forced to use Java for the solutions, sometimes which can have its own learning curve, and hard to get 100% score because of some nitpicks which are not worth spending time to fix for a course assignment (they would be for actual production code though). Also, the specs provided are sometimes missing requirements which we only find out by submitting once and reading the assessment with failed tests.
One thing that I think should be improved is the hint system for quizzes. After we submit, in most cases the hints are not enough to understand how to solve the problem. So it leaves you less fulfilled than ideal, knowing there is unsolved problem out there and no real help.
Overall, totally recommended.
I have taken several online courses, mostly on Coursera, which I've enjoyed and learned a great deal from. However, I would have to say that this is the best online course I've taken so far. The subject matter revolves around some of the most fundamental algorithms for computer science and emphasizes the importance of data representation. The choice of Java as a programming language for this course helps emphasize the distinction between data structures and abstract data types. The lectures relate the material to concrete and interesting real-world applications but also occasionally mention related open problems in computer science. The instructor is very clear in his explanations, which often make use of excellent and helpful visualizations. Lastly, the assignments are challenging but rewarding and the feedback provided by the automated grader, which accounts not only for correctness of the submitted APIs and their implementations, but also for coding style, timing, and memory use, is an invaluable learning tool.
by Jeremy s•
I am thrilled with this course. I learned so much in such a short time. The instructor was very thorough and his explanations were detailed and comprehensive. My favorite part of the course was the assignments for each week. These assignments taught me to think critically and to approach problem solving in a more directed and sophisticated manner than I had previously attempted. My skill has improved dramatically, as well as my confidence. Additionally, I developed a perseverance to truly understand complex material and complete assignments that I never would have guessed I could achieve. Thank you so much for this course.
by Raphael U•
This was a very challenging course! Truly exceptional videos by Robert Sedgewick. As for the assignments, fight the urge to give up. The typical assignment for me went like this. First, "I have no idea of how to even begin!". Second, "I actually got something!". These first two are repeated several times as different parts of the problem are solved. Third, "It works!", followed by a quick, "FAILED!" given by the auto grader, followed after a long, long time, by success. Bottom line is that the huge amount of frustration will eventually lead to a much greater sense of euphoria at finally solving the problems.
by Hongkai Y•
This is a great course! I am not a CS student and have never learned algorithms before, yet after finishing this course I feel I have a very good command of the algorithms. The professor explains the complicated algorithms in a very clear and intriguing way. What I found particularly helpful about the course content are the visual demos of the algorithms and the weekly assignments. The demos make me grasp the idea of the algorithms intuitively and the assignments improve my practical ability. You won't be regretful if you taking this course! (and the course is COMPLETELY FREE!)
by Henry L•
I thoroughly enjoyed this course and learned a lot about algorithms and data structures. Before taking this course, I found algorithms to be a very dry topic but somehow this course made it very interesting. The lectures covered a lot of real-world applications, which gave insights into some of the things which happen 'under-the-hood' of computers and databases. The 'war stories' were particularly entertaining. The assignments were at the right difficulty level (although there was the initial hurdle of learning Java from scratch).
by Ajinkya V•
Pretty dope course. A lot of knowledge about DS and Algorithms contained along with a few Java things here and there. Fairly challenging assignments as well. Would recommend building the Data Structures & Algos up before having a look at the codes provided in the lectures for thorough understanding. This part will help with the actual implementation of Data Structures since the assignments are application centric. Ample resources available for debugging and identification of flaws in interpretation.
by Alan W•
I took the part I and Part II and finished these two course last year. But I took two weeks to re-do the courses this month. I would say that I almost relearned everything. The course is so dense that you forget a lot only a few months after the first learning. They are the most two challenging courses I have ever took in my lifetime, and it really worth it. I recommend every serious programmer to take this course, maybe twice!
by Brudanin V S•
The best course I hava ever taken, at least it is in top 3. I have always struggled with data sctructures and thought that they can be understood only if you spend the whole life on it. But in this course everything was so clear that it was not even difficult. Certainly, I am taking the second part of the course.
by Kevin J•
Excellent course that covers both the implementation and use cases of common algorithms and data structures, as well as the mathematical theory and analysis of run-time. I would highly recommend this course to anyone interested in learning more about algorithmic design, and I look forward to taking part II.
by Avi P•
Excellent course. The instructor explains concepts very well, however they do not spoon feed it to you; you have to do the assignments on your own. The assignments are mostly well explained and presented, except for Collinear Points which I was unable to do without looking up a reference solution online.
by Edward A R C•
I love this course. From its content until its assignments I used many algorithms and data structure that was new for me. Honestly, I didn't know anything about Tilde Approximation, Percolation (Dynamic connectivity), when a sorting algorithm is Stable, Geometric Algorithm, and so. Thank you so much!
by shobhit g•
I believe the most exciting part of this Course was the superb assignments given after each week .Solving them really posed a challenge and it was fun to resolve them ,which bears the fruit of improvement in the marks.