Chevron Left
Zurück zu Algorithms, Part I

Kursteilnehmer-Bewertung und -Feedback für Algorithms, Part I von Princeton University

4.9
stars
5,877 Bewertungen
1,198 Bewertungen

Über den Kurs

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

RM

Jun 01, 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.

BJ

Jun 03, 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.

Filtern nach:

1 - 25 von 1,149 Bewertungen für Algorithms, Part I

von Sai

Jun 05, 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.

von Eduardo C C

Apr 12, 2019

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 the most important, 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 in your own projects.

Also, you will understand why a good algorithm worths much more than a super computer and the importance of its study, because knowing about algorithms will make you able to answer questions like: how do I now 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 skillset 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!!!!

von Maruf H

Jan 02, 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.

von Robert M

Jun 01, 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.

von Bosheng J

Jun 03, 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.

von Oleksii M

Apr 08, 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.

von Reuben P

Jun 11, 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!

von 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.

von Jack

Oct 24, 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!

von Muhammad 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.

von 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).

von GK

Nov 01, 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.

von Kamenskyi S

Feb 03, 2019

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

von Yu H

Dec 10, 2018

best algorithm course I've ever seen!

von 志勇 赵

Nov 30, 2018

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

von Tao Z

Jan 01, 2019

非常好,清晰明了。

von Derevyanko N S

Feb 23, 2019

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

von 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 ?

von Keith N

Apr 04, 2018

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

von Benjamin W

May 11, 2019

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.

von 1nas

Jan 16, 2020

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!

von 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.

von 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.

von Ryan 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.

von 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.