Chevron Left
Back to Algorithms, Part I

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

4.9
stars
11,546 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. People who are interested in digging deeper into the content may wish to obtain the textbook Algorithms, Fourth Edition (upon which the course is based) or visit the website algs4.cs.princeton.edu for a wealth of additional material. This course 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:

76 - 100 of 2,318 Reviews for Algorithms, Part I

By Azharuddin S

Jan 19, 2020

Awesome course. The instructor is one of the best in the business. It gives you a proud feeling to be taught by someone who himself has contributed so much to the tech world in terms of Algorithm and Data structures. Though sometimes it does get a little frustrating as the topic is so hard. My only complain about this course is as the course is in java for people trying to implement the Algorithms in other languages like c++, python it gets a little hard to find the alternatives of language specific features in other languages so i wish some help was given on that regard. Overall great course. A big thanks to the instructor for making this course.

By Lee W

Mar 17, 2023

The information in this course is great. But there is much more that goes into a quality course than just the material. The presentation, and organization of the information is of great significance as well.

Obviously Professor Sedgewick is very knowledgeable, and deserves a great deal of respect. That said, it is always shocking to me how lacking some lecturers are in good presentation skills. The lip smacking, the tooth sucking, the awkward swallowing, the mumbling trailing off sentences interspersed with sudden random loud coughing. These videos are a misophonia sufferer's nightmare. And it is video. How hard is it to do a take of a 15 minute video that does not include these uncomfortable interjections.

The meta information is all over the place. There is the information that is being presented, and then there is the information that a student needs in order to succeed in the course. There was important information that I did not realize until almost all the way through the course. Like, for example, I stumbled across the fact that you are allowed 10 submissions of an assignment. Until then, I was not concerning myself with the number of submissions. I would sometimes make one little change and resubmit, to see if that fixed the one issue.

There were facts that were very important to succeeding in a given assignment that were buried in the FAQ, or vaguely worded in the spec. Or even only learned by perusing the discussions.

There are just silly navigation issues like clicking the video to start the next video, but then having to click again to actually start the video. Basically the UX for the course is poor. And it is a programmer's course.

Also on the last assignment, as far as I can determine, there is an issue with the grader. My particular issue was that the autograder was showing failed tests, that when I ran the same test with the same input, using the same submitted class, my code produced the right/expected result. I submitted many times, and clearly experienced the same issue. I posted my issue in the discussion, but got no response from a "mentor". I also looked through the older discussions and saw that others had experience the same thing. I felt cheated, ignored and confused. I am pretty sure that my code is right. But maybe it sure would nice have some confirmation - one way or another.

To sum up, you get what you pay for, and this course was free, so on the one hand, I can't complain. On the other hand, the above is my honest assessment. I disliked many things about the experience. And I will be clear that, if I had paid for this course, I would be very upset. And I would not recommend the course to others.

I give it three out of five stars based on the material alone. And I struggled with that. My gut reaction was to give it two stars.

By Bilal A

Jan 10, 2024

Pros: Best course in terms of completeness. Project-based assignments reinforce learning. Good design practices are a bonus if you are an existing Java programmer. The academic touch helps one become a better thinker. A very good course for full-time learning. Cons: Need existing basic Java programming knowledge. The content has unnecessary extras such as generics and comparators. These extras are not related to the concept of data structures and algorithms. Not for people with both professional and personal commitments. The assignments are too intense to work on a part-time basis. The due-dates are very short and can be demoralizing.

By Terng N

Oct 11, 2016

Good course for a free one. Thank you for all of your great work. Somehow, the pace is too fast. Covering about 2 sections per week is by far too hard to read the book along with the class. There's no practice exercise to strengthen what you learn. The assignment is very hard and sometime don't directly implement the knowledge you learn in that week. Sometime the video sound is too quiet (but you can read the transcript when it happened.) The book is better in my opinion.

By Umut A

Mar 11, 2021

Python would be much better choice for this kind of course, Java is good but old school and archaic..

By Eric G

Oct 20, 2021

This was an excellent course. I read along in in the Algorithms pt I book and the lectures were a great compliment to the book. The homeworks were quite challenging, but I thought they were all very fun topics and as others mentioned you really feel a great sense of accomplishment from finishing them.

I came into this class with no prior Java programming experience. The first and second homeworks were difficult for me as I was struggling with the language while trying to solve the problems. I think the way the course is structured (and to a greater extent the book) if you have a rudementry Java programming background (or experience with another languge--python for me) the basics of working with Java are described, and there is enough information and examples given to help you learn Java while you learning algorithms. Reading along with the course is a big committment (500 pages); a compromise that would be helpful for someone new to java is to read the fundimentals chapter (chapter 1), which is still 100 pages, but provides a solid enough introduction to Java (for someone with prior programmming experience).

By Alex E

May 21, 2017

Great course with appropriately challenging assignments! Clearly a lot of effort was put into designing them in such a way that the API and code-tester forces you to implement precisely the algorithm they're talking about, but you still have to write all the interesting code from scratch. Difficult, but a ton of test clients and other resources are provided to help you out. I felt really rewarded for each assignment completed.

I was taking this as a refresher (took Algorithms in college), and found the lectures much more interesting this time around. For example, the way Red-Black trees were explained as an implementation of 2-3 trees, made the algorithm much easier to understand than how I learned it before, which was that a red-black tree is a binary tree maintaining such-and-such invariant blah blah blah. As a result I retained more about how the algorithm works, and the invariant actually makes sense to me now.

By Rui D

Jan 10, 2018

This course is designed so well that it is the best as an introduction for algorithm beginners. It does not include any obscure maths formulas, but it has a lot of propositions and properties that build up the rigorous analysis framework, teaching us how to think systematically in terms of designing, analyzing and choosing algorithms. Leveraging Java, you can learn the algorithm implementations and applications by experiments. This approach makes algorithms learning very practical. The course also advocates for good programming style which is very important in software construction in the industry. This is assured by using some good tools such as FindBugs and so on. Last but not least, this course provides very rich learning materials, especially the high quality assignments with good auto-graders which provide us invaluable feedback, and high quality example source code and standard library.

By Xinyuan Z

Jun 13, 2017

I can't measure how important this course is to me. I am a graduate student in the field of Theory & Engineering of Control, which is actually a domain related half with theory and mathematics and half with engineering, coding and application. I have involved in some international competitions before, responsible for C++ coding. After I struggled to finish this course and all the assignments, however, I find that I have a better understanding of programming. What I should do is definitly not just finish the functions raised by a project, but to analyse my codes, to optimise them and maintain them as something can be reused. Also I got to know the fields of robot path planning (A* algorithm) and so on. I will take another part of this course in the next month cause it really takes my a lot of time, but there are something crutial to deal with. Thank all the friends I've met in the forum.

By shan h

Jul 5, 2020

This course is great. The lecturer explains the ideas and illustrate them with animation crystal clearly. The effort put into the walk-through of the material can be clearly felt, which get the job done very well. The only thing that i felt somehow missing is the philosophy behind those algorithms, like what makes one algorithms faster than the other? Is it because slower algorithm does extra job than goal? The course might be more intriguing if that part can be covered to some extend.

The assignments really impressed me, especially how the design of auto-grader. This course can really be standalone without any instructor with this auto-grader. The assignments themselves are really useful in consolidating the covered material. Beside the design of the APIs give me a good lesson what a good encapsulation is and how convenient they could be, which is really useful experience.

By shant C

Aug 14, 2017

I took this course with no prior experience in Java, and that was not a major roadblock to finish this course. The way Dr. Robert and Dr. Kevin have designed the assignment, it’s just fabulous. They provide the helper class – StdDraw, SET, and etc. All you need to do is think about applying the lectures from Dr Robert. The delivery of the lecture from Dr. Robert is very insightful, crisp, and to the point. I liked how Dr. Robert was excited while mentioning his Red-Black tree reference on a TV series (Spoiler Alert !!!), and how the order of complexity of various data structures are computed and compared. The assignments are designed to apply the concepts on real world problems. I would like to thank Dr. Robert, Dr. Kevin, and other mentors for sharing this well-organized and well-crafted course on Algorithms. I can’t wait to begin Algorithms Part II.

By Peter K

Jan 2, 2018

I highly recommend this course to anybody who is willing to learn about data structures and algorithms, understand in which situation which algorithm or data structure may be more suitable, how are these used in real life problems or even if you only want to practice them again. The lectures are very well structured, providing a lot of useful information and each week (except for the last one) requires to program a challenging* assessment (*depends on your algorithms and data structures knowledge and experience level). Even though all the material and programming assessments are in Java, it is should not be a problem to implement the same in any other programming language (except for you might miss the generics in some - requiring you to implement "same" data structures for different primitive/elementary data types).

By Troy B

Mar 26, 2021

Great content and the lectures were about as engaging as a video can be. The assignments were big enough to be challenging but not so big as to be daunting. For most intermediate level students I expect they will need to spend the time estimated. A passing grade on an assignment can be achieved without nailing down every detail, and I believe it does demonstrate an adequate grasp of the material.

I spent way too much time trying to max out my grades, but I enjoy programming and puzzles.

My only real complaint is that the IDE provided is a bit too nit picky. It's too concerned about spelling and flagged some of my defensive programming habits (initializing variables that really didn't need to be initialized at that time, for example). Annoying.

In summary, time well spent. Good course, looking forward to part II.

By Koji G

Aug 4, 2022

Great intro course to algorithms and data structures. I found the lecture style engaging, with the use of animated visualizations a big help to gaining an intuitive understanding of each topic. The addition of "war stories" and real-world applications during each lecture were motivating as well.

The weekly programming assignments were generally solving some variant of a real-world problem using pre-coded versions of the data structures described in the course, and typically involved coding both a "brute force" and "efficient" solution using the algorithms covered in the course. I found these to be fun, though I wish there were also some supplemental coding exercises covering the nuts-and-bolts of the algorithm/data structure implementation, which were largely covered in the lecture slides.

By Liyang L

Feb 6, 2020

Excellent course covers basic algorithms and data structures, where theories are intuitively explained along with practical applications.

What impress me most is the programming assignments, which are both challenging and fun, helps strengthening my understanding of the topics and improve programming skills. It's very satisfying to improve my code and pass every correctness/memory/timing/bonus tests. I do wish there are more programming assignments.

However, I hope each topics are taught more in depth, I feel those text books contains way more contents than online courses, but reading those walls of texts are too dry and daunting compared to online learning and practicing. I understand that buiding a learning platform like this requires huge efforts, so this is just my wish.

By Ramshankar

Oct 26, 2019

Prof. Sedgewick is super great. This course is tough although there are only programming assignments in the coursera version. The videos can be viewed several times and we may catch up on ideas that we miss due to short-attention spans etc issues. I shudder to think of the days when we did not have video recordings... The assignments are graded by a machine using a very carefully designed method- they really take teaching seriously out there. It is all fine and such and did you know, they have a super cool java development kit and an algs package.. i haven't used java much for many many years but I enjoyed all the help that i got out of the course's JDK that offered loads of type checking etc. and you can install in linux or windows. Have fun at it, if you can.

By Adam S

Aug 3, 2020

Highly recommend to those wanting to learn from scratch or refresh their memory on data structures & algorithms. I recommend supplementing this course with the textbook version which features more details and homework questions in addition to the very well made programming assignments on this platform. If you enjoy this course, I would also highly suggest to check out the part 2 of this course. It is a little more challenging however I would debatably say the information in that part is very valuable as it includes many practical applications you would see anywhere. Cheers to Kevin Wayne, Robert Sedgwick and any other person who contributed to the development of these resources. It is greatly appreciated by many self-learning students including myself.

By Nikita Z

Mar 21, 2017

Great overview course. I have taken algorithms in college, and I am currently a software developer, but I have found this tremendously useful to review the material (especially good for interview prep!). I even gain a better understanding of concepts I thought I knew well already. The professor explains everything in a concise and thorough manner, the homeworks are well thought out, and the hints are helpful. The only improvement I could think of for the course would be to make the lecture sound a bit quieter during the few times the professor would cough -- the mic distortions can be a little annoying. Overall, highly recommend this course to anyone looking to learn basics of algorithms or review the material for interviews or general understanding.

By iGor B

Jul 3, 2017

It is one of best courses I took. Prof Sedgewick explains complex things in easy manner, by providing not only steps to algorithms but also reasons, context, history about them. So your background becomes more solid.

For instance, I was always wondering about red-black trees why its properties are stated in some particular way, but by looking at 2-3 trees, I now understand roots.

Practical examples are really good and they teach you program according to API and be careful about small details.

I would ask authors of course to add practical tasks to last 6th week, without them it is just theoretical. I am looking forward for 2nd part of course which should appear soon.

Could you please provide estimates for 2nd part of course if possible?

Excellent work!

By Ted A

Jul 5, 2022

This is perhaps the most valuable computer science course I have ever taken. The professor is clearly knowledgable (after all, he created a number of these algorithms), and he is also excellent at teaching the material. The assigments are useful and well-designed. The autograder is disturbingly good at ferreting out bugs and inefficiencies in my code. The slides are well-designed and interesting. The professor spends the right amount of time working through examples to make the concepts clear. I have been a (mostly self-taught) professional programmer for decades and am good at my work, but this course will find practical application in my work and will make me better at what I do. Many thanks to all involved in making it available.

By sudhir K

Nov 19, 2016

The best algorithms course. The video lectures are very good. Prof.Sedgewick builds the concepts very well. The code examples/library written by Prof. Wayne and Prof. Sedgewick's code are very compact and the best I have seen. The online website is great supplement to the book. The auto grader is air tight, that forces the student to think and write their code to the specs. My greatest appreciations for Prof. Wayne and Prof. Sedgewick. I wish students have the option to submit their solutions in C++ because in most of the languages the core algorithms/data structures are often written in c/c++ , I understand it is not easy because the course libraries and grader has to written for c++.

By Carlos F P

Feb 20, 2020

This course has a great balance. Want to push yourself to the very limit to write code that is efficient, has a small memory footprint and is correct ? just get 100 on the assignments. Want to become familiar with the most basic algorithms and data structures that every programmer must know (my case) ? just get 80 points on the assignments. They are fascinating, and cover some applications of algorithms and data structures to problems, they allow you to see a little bit why these topics are important. Overall a nice experience. I can't believe this course is offered for free. Professor Sedgewick truly wants to help humanity improve, I guess.

By Ruchitya T A

Aug 14, 2017

A wonderful course that not only teaches one the concepts behind a given data-structure or algorithm, but also prods one to realize software implementations of the same to solve puzzles/ practical problems. The coding assignments do take some time, they are not easy. I took more than the stipulated 5 hours on almost all assignments. But it was worth it, since the problems presented are definitely not easy and give a real sense of accomplishment once completed. There are plenty of pointers to lead one to the correct answer eventually, in the form of checklists and the discussion forum, so fear not! Will be taking up Part 2 of the course soon.

By 李昆泰

Feb 17, 2023

Really impressive, and friendly to non-native speaker of English. I'm really surprised to get to know that the inventor of red-black tree is the teacher of this course. And a small suggestion for people who is about to come to this course: object oriented programming may be tough, but you can gradually learn it by checking the code provided by the booksite and using that as your inspiration to create your own code. The discussion fourm is also really helpful, and it would be nice to have some friends or classmates to learn and discuss together. (especially to non-Princeton students.) Checking online may also help when encountering problems.

By K M M H

Jun 1, 2017

An excellent course for programmers who already knows programming but want to take it to the next level. Prof. Sedgewick has done an excellent job explaining the data structures and the algorithms by starting from simple idea and gradually building up on that. His lectures are slow and easy to follow. The programming assignments are interesting and challenging at the same time. I wish the programming exercises were available too. I feel that whatever I have learnt from this course will be immediately useful in my day to day job. Thanks coursera, Prof. Sedgewick and Prof. Wayne for the course. Looking forward for taking Algorithms Part II.