Algorithms, Part I
Provided by:

9/10 stars
based on
22 reviews
Provided by:

Course Details
Cost
FREE
Upcoming Schedule
- On demand
Course Provider

Coursera online courses
Coursera's online classes are designed to help students achieve mastery over
course material. Some of the best professors in the world - like neurobiology
professor and author Peggy Mason from the University of Chicago, and computer
science professor and Folding@Home director Vijay Pande - will supplement your
knowledge through video lectures. They will also provide challenging
assessments, interactive exercises during each lesson, and the opportunity to
use a mobile app to keep up with yo...
Coursera's online classes are designed to help students achieve mastery over
course material. Some of the best professors in the world - like neurobiology
professor and author Peggy Mason from the University of Chicago, and computer
science professor and Folding@Home director Vijay Pande - will supplement your
knowledge through video lectures. They will also provide challenging
assessments, interactive exercises during each lesson, and the opportunity to
use a mobile app to keep up with your coursework. Coursera also partners with
the US State Department to create “learning hubs” around the world. Students
can get internet access, take courses, and participate in weekly in-person
study groups to make learning even more collaborative. Begin your journey into
the mysteries of the human brain by taking courses in neuroscience. Learn how
to navigate the data infrastructures that multinational corporations use when
you discover the world of data analysis. Follow one of Coursera’s “Skill
Tracks”. Or try any one of its more than 560 available courses to help you
achieve your academic and professional goals.
Provider Subject Specialization
Humanities
Sciences & Technology
4954 reviews
Course Description
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 basic iterable data types, sorting, and searching algorithms.
Instructors
Instructors:
Robert Sedgewick, Kevin Wayne
University
University:
Princeton University
Instructors
Instructors:
Robert Sedgewick, Kevin Wayne
University
University:
Princeton University
Reviews
9/10 stars
22 Reviews for Algorithms, Part I
Ratings details
- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars
- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars
- 5 stars
- 4 stars
- 3 stars
- 2 stars
- 1 stars
Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.
Sort By

- 9 reviews
- 7 completed

7 years ago
I said this in my review of Part II, but it applies equally well to Part I:
For anyone who loves programming, this is a truly memorable course taught by
one of the great heavyweights in the field. It's really something to see that
such an important researcher as Sedgewick is also a phenomenal teacher. It's
beautiful the way he shows the algorithms operating. Most powerpoint/pdf
lectures are just frankly wastes of time to me, but Sedgewick animates his
algorithms slowly and without skipping steps on his slides so that you really
see how the algorithms work. It can be so hard to look at a piece of code and
decipher exactly what the process is that's being executed, but the animations
really help to clarify. Part I is a really awesome survey of sorting
algorithms and search data structures. I loved the way Sedgewick taught how to
do real, industrial-strength implementations of quicksort, for instance. I
loved the discussion of the Dutch...
I said this in my review of Part II, but it applies equally well to Part I:
For anyone who loves programming, this is a truly memorable course taught by
one of the great heavyweights in the field. It's really something to see that
such an important researcher as Sedgewick is also a phenomenal teacher. It's
beautiful the way he shows the algorithms operating. Most powerpoint/pdf
lectures are just frankly wastes of time to me, but Sedgewick animates his
algorithms slowly and without skipping steps on his slides so that you really
see how the algorithms work. It can be so hard to look at a piece of code and
decipher exactly what the process is that's being executed, but the animations
really help to clarify. Part I is a really awesome survey of sorting
algorithms and search data structures. I loved the way Sedgewick taught how to
do real, industrial-strength implementations of quicksort, for instance. I
loved the discussion of the Dutch National Flag problem for partitioning.
These kind of critical details are very often left out of algorithms courses
where you are usually presented with a simpler quicksort that doesn't perform
nearly as well. Another highlight was the bouncing balls in a container
simulation (could have just as well been gas molecules in a box) using
priority queues. I mean what a cool application that would be impossible to
run without such an efficient data structure. The percolation project was
pretty difficult, but also really interesting. Sedgewick gives such a clear
discussion of union-find. My favorite project though was the one on K-d trees,
which are extremely important in 3D graphics. It was by far the hardest
project in either Algorithms I or II, but so satisfying once you get it up and
running and meeting all performance deadlines. The only complaint I have about
the course is the left leaning red-black trees. While the code is really
really short for them, it's also much more clever and difficult to follow than
the more straightforward CLRS implementation, and it also doesn't perform as
well (which is why you see CLRS style red-black trees in the C++ STL, for
instance, rather than Sedgewick's left leaning red black trees). Don't get me
wrong: the left leaning red-black tree data structure is pretty cool, but I
think it would be better taught as a modification of the classic RB trees. To
close this review, this comment I made in the review for Part II applies
equally well to Part I: Professor Kevin Wayne was EXTREMELY active on the
forums. I can't count how many times I'd have a question about something and
Professor Wayne would weigh in within a couple of hours to answer me. I don't
know how he has the energy, but we'd be fools to not take advantage!

- 65 reviews
- 59 completed

1 year, 5 months ago
Great course for everybody, who's studying computer science and programming.
The author has a rare talent of explaining complicated things in a clear manner, step by step expanding your proficiency. I personally was amused by the elegance of his explanation of Black-Red trees, which he made step-by-step from 2-3 trees.
Taking into account, that Bob Sedgewick is a famous computer scientist himself, and is the one invented Red-Black trees, the course is especially valuable.
The only flaw if that the author uses only Java for showing the implementation of the algorithms. Using more, than 1 language would be more appealing.

- 4 reviews
- 3 completed

3 years, 11 months ago
-You will learn algorithms
-Programming assignments are in Java
-Prof. Robert always gives the basic idea behind the Algorithm and explains the java code very easily.
-Short video lectures are good.
-You will get to implement all the data structures like min heap etc...

- 1 review
- 1 completed

5 years, 2 months ago
PROS:
This is the best introductory course to learn about algorithms. It provides best of quizzes, programming assignments and interview questions.
It uses java as a vehicle language, however it doesn't use high level java specific features, so, if you know some other object oriented programming language then you are good to go.
Using the book Algorithms by the professor Bob Sedwick and Kevin Wayne would also be helpful.
Best part of this course is programming assignments. Don't miss them.
CONS:
Doesn't provide any certificate or even mark sheet( and rightly so).
I believe that shouldn't be a concern if you are really motivated.
ADVICE:
Go for it.

- 10 reviews
- 8 completed

5 years, 11 months ago
If you really want to learn basic data structure Queue,Stack,quick sort etc in an interesting(NOT BORING) and want to implement yourself in Java then take this course.After taking this course I understand the difference between queue and priority queue(Really imp. data structure).Sedgewick sir will easily walk you through the java code for each data structure.

- 6 reviews
- 6 completed

6 years, 4 months ago
Review: As many of the others have indicated, this course is a fantastic
course for understanding the power of algorithms. Some Algorithms courses
focus on the analysis of algorithms and others focus on the design or
implementation of algorithms. This course takes a very application approach
to algorithms. Within a week of enrolling in this course, I was using its
implementations for improving my programming for my job. For example, I
learned how to analyze the memory usage of a program and used this to improve
some software at my job. In addition, I have used the tools from this course
to improve the efficiency of our algorithms. This alone made the course worth
it.
Pros:
* Course is very application focuses and introduces the students to almost all the big topics in algorithms (unions, analysis of algorithms, graphs, string processing, sorting, searching and so forth)
* Reading material, lecture notes and additional...
Review: As many of the others have indicated, this course is a fantastic
course for understanding the power of algorithms. Some Algorithms courses
focus on the analysis of algorithms and others focus on the design or
implementation of algorithms. This course takes a very application approach
to algorithms. Within a week of enrolling in this course, I was using its
implementations for improving my programming for my job. For example, I
learned how to analyze the memory usage of a program and used this to improve
some software at my job. In addition, I have used the tools from this course
to improve the efficiency of our algorithms. This alone made the course worth
it.
Pros:
* Course is very application focuses and introduces the students to almost all the big topics in algorithms (unions, analysis of algorithms, graphs, string processing, sorting, searching and so forth)
* Reading material, lecture notes and additional resources provide an excellent method for learning the material
* Programming assignments give you a great understanding of the material
* Instructors provide a very good approach to solving problems: define the problem, write out the API, develop the test client, visualize the algorithm, and break up the problem into small pieces to solve
Cons:
* Exercises and final exam are randomly generated and must be completely restarted after each attempt; 10 attempts and 3 attempts are allowed on the exercises and final exam, respectively. Slight mistakes are often not given partial credit and can take the fun out of learning.
* Java coding practices are not followed (as mentioned by other reviewers). For example, variable and class names are often abbreviated. I am assuming the instructors did this to fit the code on the lecture slides so it is understandable, especially since all the variables are well defined.
* Programming assignments can take a large amount of time (10 - 20 hours per week). While I did not mind this, be ready to spend a large amount of time on some of the assignments if you do not have extensive experience. The instructors could cut back on the amount of time spent by providing coding templates, more helper functions/methods and separating out the grading for different pieces of the code.
* Dynamic programming is not a focus in this course (or the next). While it is mentioned informally, it seems like this topic should be considered for future offerings.
Join our mailing list for course updates, discounts and more.
Enter your email address here.

- 2 reviews
- 2 completed

6 years, 7 months ago
The course content is rich, well organized and well presented. It is not a
conventional approach to the subject, the topics are presented in a
"constructive" manner and usually the level of abstraction (but not necessary
difficulty) increases week by week. The programming assignments/quizzes are
really good, the autograder is fantastic. You can learn a lot of Java, Data
Strucuture, Programming best practices, Algorithms design analysis and
comparison.

- 9 reviews
- 8 completed

6 years, 9 months ago
I've taken a number of computer science courses and this one is definitely
among the top ones. Robert Sedgewick speaks a bit slowly but explanations are
great and easy to understand. Drilled exercises are a bit boring, but
programming assignments and final exams were very engaging and of high
quality. Also programming interview questions were an interesting addition to
the course, though not enough help to solve them was provided (only small
hints, and a not very active sections in discussion forums). Had to google for
answers : ) and some still remain unsolvable for me. First part focuses on
basic topics like searching and sorting, and also deals with basic data
structures -- a stuff, really, every programmer should know. So, if you don't
know how to implement a hash table you may consider taking this course :)
There's not much math in this course, the focus is on learning about different
algorithms and data structures, and using th...
I've taken a number of computer science courses and this one is definitely
among the top ones. Robert Sedgewick speaks a bit slowly but explanations are
great and easy to understand. Drilled exercises are a bit boring, but
programming assignments and final exams were very engaging and of high
quality. Also programming interview questions were an interesting addition to
the course, though not enough help to solve them was provided (only small
hints, and a not very active sections in discussion forums). Had to google for
answers : ) and some still remain unsolvable for me. First part focuses on
basic topics like searching and sorting, and also deals with basic data
structures -- a stuff, really, every programmer should know. So, if you don't
know how to implement a hash table you may consider taking this course :)
There's not much math in this course, the focus is on learning about different
algorithms and data structures, and using them to solve day-to-day problems,
not about developing mathematical models to analyze algorithms and such stuff.
Java basics are required if you want to have an output from the autograder but
I think programmers in other languages might also find this course useful (if
they don't mind some Java :). Finally, there's also a book and an excellent
website, so you can really get "it".

- 1 review
- 0 completed

7 years ago
15 years of experience with Java development. I would progress on algorithms.
I found that the assignment lack of tooling in comparaison with others
courses. * No code provided : for example the interface we have to implements
and some basic test cases to pass with our first implementations * Others
course provide 'submit' mechanism and do not required to do a zip manually
with only the assignment class code (and nothing else). I really dislike that
I can't respect Java standards : * Unable to do JUnit tests because we can't
enrich our code with new methods. We should only have to implements the
required interface, and respect this interface why remove errors with new
methods ? (in java test classes need to have a default access to method under
tests) * necessity to have out class in the default package. This leads to
unusual errors as Java has not been design in this way and discourage to do
that. * I don't like to have a lot of err...
15 years of experience with Java development. I would progress on algorithms.
I found that the assignment lack of tooling in comparaison with others
courses. * No code provided : for example the interface we have to implements
and some basic test cases to pass with our first implementations * Others
course provide 'submit' mechanism and do not required to do a zip manually
with only the assignment class code (and nothing else). I really dislike that
I can't respect Java standards : * Unable to do JUnit tests because we can't
enrich our code with new methods. We should only have to implements the
required interface, and respect this interface why remove errors with new
methods ? (in java test classes need to have a default access to method under
tests) * necessity to have out class in the default package. This leads to
unusual errors as Java has not been design in this way and discourage to do
that. * I don't like to have a lot of error due to not respect the course
source code standards. Why should I have the same places for brackets,
accolade or parenthèse. * Usage of an unknown Java editor in place of
classique standard IDE like Eclipse, IntelliJ or NetBeans. It has been quite
hard to hand made a 'standard' environment. I drooped this course because I
spent to much time to deal with surprising requirements instead of focusing on
algorithms. Even parts of the lesson are really interesting.

- 2 reviews
- 1 completed

7 years ago
Professor Sedgewick gave great explanations on the various algorithms showed,
with interactive diagrams. Also, the programming assignments are interesting.
While it's not too hard to get a somewhat good grade for them, getting full
marks is a challenge that really gets people thinking on how to optimize
algorithms. The quizzes, while sometimes posing hard questions, tend to be
simulations and calculations.

- 5 reviews
- 4 completed

7 years, 1 month ago
Interesting course. I took it with some friends,some professional programmers
(including myself) and a couple of noobs. It was a fair bit of work, and I was
the only one who completed it - it was far too hard for the noobs, and the
others just missed a few deadlines and quit. Turns out I didn't really
remember the details of most algorithms, and needed the detailed review to get
it (along with basic algebra like exponent rules, which was embarrassing).
When I allowed myself enough time, the assignments were fun and the auto
grader gave useful error reports. I did feel that the unlimited uploads made
it easy to test against the autograder instead of writing proper tests, but
that's a problem with my own self discipline. The forums were very active and
useful.

- 19 reviews
- 19 completed

6 years, 9 months ago
With the famous Princeton professors, and a legend in algorithm Prof Robert
Sedgewick, this course is simply one of the best course in Coursera. Very well
structured, with very good and comprehensive PDF slides. Very precious course.
Though, unfortunately there is no statement of accomplishment or certificate
awarded for completing this course due to Princeton policy.

- 4 reviews
- 3 completed

7 years, 4 months ago
Excellent course that is perfect accompaniment to their excellent book, you
will need to know some Java and I'd recommend use of eclipse not but they give
you great libraries and with the help of the discussion forums it should be
easy to follow along.

- 1 review
- 1 completed

7 years, 4 months ago
The best course I've taken so far. Excellent lectures. Lecturer seems to be
very competent. The best part of the course is assignments. I have really
enjoyed doing them. Didn't really like the quizes at first. But at some point
I realized that the quizes had helped me to uncover some holes in my
understanding of the material.


Student
10/10 starsCompleted
7 years, 8 months ago
This was my first MOOC. The strongest parts were: \+ Lectures \+ Programming
Assignments \+ Discussion Forums The weakest parts were: \+ Quizzes \+ Final I
really like the auto grader. It provided instant feedback. The test cases and
resource utilizations were extremely helpful in completing the assignment.
While getting the assignment to work wasn't a major challenge, getting to work
within the time and space boundaries was. It was a challenge to optimize these
assignments, and without the auto grader and its feedback, I doubt that I
would have reached those levels of optimized performance.

- 5 reviews
- 5 completed

7 years, 9 months ago
Brilliant practical introduction to Algorithms. I did this course along with
the theoretical Algorithms course by Prof. Roughgarden. These courses
complement each other wonderfully and I strongly recommend both these courses.
In the process of this course, I got to learn Java. My programming background
was limited to C++ and some Matlab before I took this course. Prof. Sedgewick
is a very likable teacher and course material is top-notch. Everything is very
well-planned and the programming assignments drive the concepts right home.
The forums are lively and TAs very helpful. Two thumbs up and looking forward
to the Part 2 of this course!

- 1 review
- 0 completed

7 years, 9 months ago
Took this and Algo II, the structure of both courses is identical, and so is
my review. Good to excellent lectures, explanation is very clear, examples on
spot and in the end you finish your unit knowing it, especially if you try to
replicate what he's saying with your own IDE, and test results. I took it as a
algorithms and Java refresher, both topics I'm unfortunately not using since
few years, and for that, it worked. The weakest point are surely quiz. With
the randomization occurring at every attempt, replicating algorithms in pen
and paper was an unpleasant, frustrating experience, and I quickly lost
interest in completing it - the power of repeatable quiz, is to fix knowledge
errors and misconceptions by feedback, not punish those trying to learn.
Assignments were quite interesting and I wish I would have tried a couple
more... In the end, the lack of any sort of reward or performance measure,
even only the honor certification,...
Took this and Algo II, the structure of both courses is identical, and so is
my review. Good to excellent lectures, explanation is very clear, examples on
spot and in the end you finish your unit knowing it, especially if you try to
replicate what he's saying with your own IDE, and test results. I took it as a
algorithms and Java refresher, both topics I'm unfortunately not using since
few years, and for that, it worked. The weakest point are surely quiz. With
the randomization occurring at every attempt, replicating algorithms in pen
and paper was an unpleasant, frustrating experience, and I quickly lost
interest in completing it - the power of repeatable quiz, is to fix knowledge
errors and misconceptions by feedback, not punish those trying to learn.
Assignments were quite interesting and I wish I would have tried a couple
more... In the end, the lack of any sort of reward or performance measure,
even only the honor certification, drained my interest in investing more time
than simply watching the videos, and I finished skipping few units, to start
different courses. Overall, the very high quality of the lectures will make me
consider to check the courses again in the future for improvements.

- 10 reviews
- 10 completed

7 years, 4 months ago
Great lecture videos. The lecturer uses pictures and animations to teach the
data structures and algorithms that make the explanations very clear. Some
proofs of the algorithms' performance are included. The code presented in
lectures is very clear and clean. The programming assignments are quite tough
and fun, and only differ slightly than the Princeton's equivalent. The
downsides are the exercises, which require us to simulate some aspects of the
algorithms by hand. On each try, the questions are new, so if you only have 1
mistake in previous try, you have to do it all over again, which is
frustrating. The job interview questions are more interesting than the
exercises, although they aren't graded. There's also no statement of
accomplishment, and you even won't find your final points in your Coursera
course records. Definitely the course to take when you first tackle this
subject.

- 14 reviews
- 13 completed

8 years, 3 months ago
This course is based on Chapters 1 to 3 of the textbook written by the same
professors (http://algs4.cs.princeton.edu/home/). Frequent use of animations
that simulate algorithms step by step made it so easy to understand how they
work. I took this course mainly to learn about Java (I knew C++). All the 5
programming assignments were in Java and Coursera submission page gave you
detailed feedback as to which tests passed or failed, etc. I found every
assignment well thought out and often dealing with an interesting problem of
its own, for example, percolation (using union-find tree) and 8 puzzle (using
stack for solving a simple AI search problem). On the other hand, quizzes were
very boring where you were asked to simulate the algorithms taught in the
lecture by hand (e.g., what does the input array "SDHFIENCPV" look like after
5 swap operations in quicksort?). Since it is Princeton University's policy
not to offer any kind of certif...
This course is based on Chapters 1 to 3 of the textbook written by the same
professors (http://algs4.cs.princeton.edu/home/). Frequent use of animations
that simulate algorithms step by step made it so easy to understand how they
work. I took this course mainly to learn about Java (I knew C++). All the 5
programming assignments were in Java and Coursera submission page gave you
detailed feedback as to which tests passed or failed, etc. I found every
assignment well thought out and often dealing with an interesting problem of
its own, for example, percolation (using union-find tree) and 8 puzzle (using
stack for solving a simple AI search problem). On the other hand, quizzes were
very boring where you were asked to simulate the algorithms taught in the
lecture by hand (e.g., what does the input array "SDHFIENCPV" look like after
5 swap operations in quicksort?). Since it is Princeton University's policy
not to offer any kind of certificate in Coursera (at least up to now), it
doesn't matter at all if you skip them, though. I believe Part II, which
starts in November, will cover chapter 4 through 6 and am looking forward to
it.

- 6 reviews
- 6 completed

8 years, 4 months ago
Really well-done. Best of the online algorithm classes so far. Great teacher,
well-organized, homework supports material. Feels like a top-notch, university
level course. Course follows a very good textbook written by the instructor.

- 2 reviews
- 2 completed

8 years, 3 months ago
A good introduction (or review) to the basic data structures and its
implementation. It is focussed on the implementation in Java and the usage and
not on format correctness proofs. Good organization and material. Some
treatments of Java details have been wrong or at least you can discuss if a
experienced Java developer would do certain things the way they presented it.