# Algorithms: Design and Analysis, Part 1

Provided by:

9/10 stars

based on
35 reviews

Provided by:

## Course Details

### Cost

**FREE**

### Upcoming Schedule

- TBA

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

4679 reviews

## Course Description

In this course you will learn several fundamental principles of algorithm design: divide-and-conquer methods, graph algorithms, practical data structures (heaps, hash tables, search trees), randomized algorithms, and more.

Instructors

Instructors:
Tim Roughgarden

University

University:
Stanford University

Instructors

Instructors:
Tim Roughgarden

University

University:
Stanford University

Reviews
9/10 stars

35 Reviews for Algorithms: Design and Analysis, Part 1

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

**12**reviews**12**completed

6 years, 4 months ago

Prior experience in the field: Some basic reading on algorithms/data
structures. Like: Covered many interesting topics, although most involved data
structures. The programming assignments were interesting, and allowed you to
work in whatever language you wanted (But... see "Dislike"). The quizzes were
worthwhile as well, as opposed to most online courses. The lecturer is very
enthusiastic and engaging. His tone is informal and this makes the material
easy (& fun) to absorb. Dislike: No algorithms were covered, but this will be
covered in Part 2 of this course. Tim Roughgarden's handwriting is a little
tough to understand, although he gave ample warning at the beginning of the
course. The programming assignments only checked the final output and you
couldn't receive too much feedback on your code (But, this provided for some
advantages... see "Like"). Suggested improvements: Provide more programming
assignments. Overall: A good course...
Prior experience in the field: Some basic reading on algorithms/data
structures. Like: Covered many interesting topics, although most involved data
structures. The programming assignments were interesting, and allowed you to
work in whatever language you wanted (But... see "Dislike"). The quizzes were
worthwhile as well, as opposed to most online courses. The lecturer is very
enthusiastic and engaging. His tone is informal and this makes the material
easy (& fun) to absorb. Dislike: No algorithms were covered, but this will be
covered in Part 2 of this course. Tim Roughgarden's handwriting is a little
tough to understand, although he gave ample warning at the beginning of the
course. The programming assignments only checked the final output and you
couldn't receive too much feedback on your code (But, this provided for some
advantages... see "Like"). Suggested improvements: Provide more programming
assignments. Overall: A good course to get started with algorithms, Tim
Roughgarden explains even the toughest of concepts with ease.

Student

10/10 starsCompleted

2 years, 11 months ago

It is an excellent course. Probably the best proffessor to learn Algorithms. He keeps you engaged.
But the course doesn't complete advanced algorithms. They are there as part 2(another course) . But for 5 weeks he covered the important ones. Adding other things would be too much for a 5 week course

**10**reviews**8**completed

3 years, 8 months ago

This course taught us where else we can use merge sort.heap sort and other basic programs.Doing Princeton's Algorithms course helped me.Majorly here Tim(Instructor) explained the running time of all sorting ,graph programs etc.

**1**review**0**completed

4 years, 2 months ago

The best course I ever took online. A well understood teacher. Fast pace, no
time wasted. Useful, explains the most useful algorithms every technology
expert needs.

**59**reviews**57**completed

4 years, 4 months ago

Part I of Stanford’s course on algorithms, taught by Prof. Tim Roughgarden,
begins by laying out the criteria by which an algorithm can be judged -- its
complexity in time and space, and how well it scales to large input sets. The
class then turns to divide-and-conquer algorithms, graph algorithms, and data
structures such as heaps, binary search trees, hash tables and Bloom filters.
The class is not introductory -- programming ability and basic familiarity
with the concepts presented is assumed. As it happens, all of the topics in
this class (and its successor) are covered at a simpler level in the excellent
MIT 6.00x online class, which should be considered a prerequisite for this
one. I would have been quite lost without that introduction, and certainly
never felt as if I was covering the same ground again -- this class delves far
deeper.
Prof. Roughgarden is a fabulous teacher. His presentation is so articulate
and so engagi...
Part I of Stanford’s course on algorithms, taught by Prof. Tim Roughgarden,
begins by laying out the criteria by which an algorithm can be judged -- its
complexity in time and space, and how well it scales to large input sets. The
class then turns to divide-and-conquer algorithms, graph algorithms, and data
structures such as heaps, binary search trees, hash tables and Bloom filters.
The class is not introductory -- programming ability and basic familiarity
with the concepts presented is assumed. As it happens, all of the topics in
this class (and its successor) are covered at a simpler level in the excellent
MIT 6.00x online class, which should be considered a prerequisite for this
one. I would have been quite lost without that introduction, and certainly
never felt as if I was covering the same ground again -- this class delves far
deeper.
Prof. Roughgarden is a fabulous teacher. His presentation is so articulate
and so engagingly down-to-earth that you can lose sight of how complex the
material actually is. Fear not, however, because the challenging weekly
problem sets will have you scurrying back to the slides and maybe the lectures
as well to deepen your understanding. The final exam has a few difficult
problems but by and large is easier than the problem sets.
Besides the problems, there are weekly programming assignments that have you
coding up one of the algorithms discussed that week. You can use whatever
language you want -- you’re given a dataset and asked to submit results. In a
couple of cases, the datasets are so large that your programming environment
may crash, as mine did, resulting in panicked discussion-board postings a lot
of ad hoc advice. It was unnecessary. Yes, coding algorithms in the real
world means figuring out how to accommodate the limits of your system, but
such strategies are not covered in this course and solutions can be elusive.
Just getting the algorithm to work right is challenge enough.
This is a computer-science course and there’s plenty of math – proofs galore,
probabilities, topologies and much more. But it’s never math for math’s sake.
Prof. Roughgarden always introduces topics with a statement of motivation –
how a mathematical construct can describe or model real-world systems, the
sometimes-surprisingly practical applications of abstract graph algorithms or
esoteric data structures. The syllabus progresses through a diverse series of
topics but the unifying theme is identifying a job to be done and figuring out
how best to do it – and more importantly, understanding the elastic limits of
“best.”

**1**review**1**completed

4 years, 7 months ago

I took this course and the follow up, both taught by professor Roughgarden. I
taught myself some java beforehand and I studied math in college, which
definitely helped when it came to understanding the proofs. The only other
coursera courses I had taken were the princeton series in design of algorithms
by professor Sedgewick (also great). Professor Roughgarden is awesome. His
explanations, proofs, and the motivations for them are well articulated and
concise. The course was a nice hybrid between an applied course and a
theoretical one, almost all results had an accompanying proof. That said, this
course is more mathematical than the princeton ones. The problem sets require
a thorough understanding of the material and the programming assignments took
me a long time (I am a novice programmer). The discussion boards were very
lively and people provided a lot of useful insight into how to approach the
problems, without ever giving away t...
I took this course and the follow up, both taught by professor Roughgarden. I
taught myself some java beforehand and I studied math in college, which
definitely helped when it came to understanding the proofs. The only other
coursera courses I had taken were the princeton series in design of algorithms
by professor Sedgewick (also great). Professor Roughgarden is awesome. His
explanations, proofs, and the motivations for them are well articulated and
concise. The course was a nice hybrid between an applied course and a
theoretical one, almost all results had an accompanying proof. That said, this
course is more mathematical than the princeton ones. The problem sets require
a thorough understanding of the material and the programming assignments took
me a long time (I am a novice programmer). The discussion boards were very
lively and people provided a lot of useful insight into how to approach the
problems, without ever giving away the answer. I highly recommend this course
to anyone wanting to learn more about algorithms and I had a great time taking
it.

**4**reviews**4**completed

4 years, 8 months ago

Tim Roughgarden is by far the best instructor I have encountered in the MOOC
world so far - he manages to be mathematically concise and absolutely
hilarious at the same time. The current iteration of part 2 actually has a
thread on the discussion forums titled "Favorite Tim Roughgarden quotes", and
it has gotten quite some attention. Tim's mantra ("Can we do better?") will
stay with me forever. About the course... Pros: The topics are carefully
chosen and always motivated by some real-life problem. The programming
assignments were absolutely awesome. Some reviewers criticized the absence of
an auto-grader, but this has been a conscious decision to enable people to
choose whatever programming language they want to work in, so the whole auto-
grader issue is really just a matter of preference. I think it makes sense for
this course, since the focus is clearly not on implementation-specific
details. Another reviewer criticized the (huge...
Tim Roughgarden is by far the best instructor I have encountered in the MOOC
world so far - he manages to be mathematically concise and absolutely
hilarious at the same time. The current iteration of part 2 actually has a
thread on the discussion forums titled "Favorite Tim Roughgarden quotes", and
it has gotten quite some attention. Tim's mantra ("Can we do better?") will
stay with me forever. About the course... Pros: The topics are carefully
chosen and always motivated by some real-life problem. The programming
assignments were absolutely awesome. Some reviewers criticized the absence of
an auto-grader, but this has been a conscious decision to enable people to
choose whatever programming language they want to work in, so the whole auto-
grader issue is really just a matter of preference. I think it makes sense for
this course, since the focus is clearly not on implementation-specific
details. Another reviewer criticized the (huge) size of the data sets for the
programming assignments. I have to politely disagree. If I'm confronted with a
relatively small data set, I might as well go ahead and just use a brute-force
implementation. Sure, I can run a sophisticated algorithm on a small data set
- after all, I'm doing this class because I want to learn something new... But
well, I think we all know how that can go. Personally, I found it highly
motivating to deal with data sets that made a brute-force approach absolutely
unfeasible. It also made me think very hard about the data structures I used -
space is definitely an issue in some of the assignments. Cons: For some reason
I just couldn't get myself to enjoy the weekly quizzes. I have thought about
it for a while, and I still can't quite figure out why I disliked them. I'll
try to explain anyway. There seemed to be two types of questions: The first
type required some light-weight calculations, maybe two or three lines and/or
some doodling. Those were okay, although I wouldn't have minded something a
little more challenging. The second type of questions were... kind of black-
and-white. Either you were looking at the problem from the right angle (and
then the correct answer was obvious), or you weren't (and then it was just
like, "huh?"). I'll admit that I had my fair share of aha-moments with the
type-2 questions, and they did complement the lectures nicely, but still,
something was missing. I felt like I didn't engage as much with the material
as I would have liked. Now the con part of my review turned out to be almost
as long as the pro part... but don't let that fool you. This is a great
course, highly recommended!

### Join our mailing list for course updates, discounts and more.

#### Enter your email address here.

**1**review**1**completed

4 years, 7 months ago

The course content was really very apt.
You get a good knowledge of the basic algorithms you'll encounter in
simple/moderate programming exercises.
And it creates a strong base for the part-II, where some more advanced
algorithms are discussed.

**1**review**1**completed

4 years, 8 months ago

**11**reviews**10**completed

4 years, 9 months ago

I was happily challenged during this class (and I did not make it easier on
myself by programming in perl, not so popular nowadays among academics!) This
class made me realise why students from prestigious universities have better
chances in life: having such enthusiastic, knowledgeable and altogether
excellent teacher is such an advantage! The technical content and delivery are
both excellent. I am looking forward to get some free time again to take part
2 of this class.

**12**reviews**10**completed

3 years, 8 months ago

Excellent lectures. Good assignments. The assignments were crafted so that if
you understood the algorithm your solution would run in a reasonable amount of
time, otherwise the solution would take forever. So that in itself was a good
check on your work. If you're teaching yourself programming and want to leave
amateur status, you absolutely must learn algorithms, and this course will
teach you all the most important methods. Highly recommended.

**2**reviews**2**completed

4 years, 9 months ago

This course is excellent introduction to the world of analysis and design of
algorithms. I loved the detailed mathematical proofs accompanying all
algorithms covered in the course. The programming assignments were challenging
and some of them took more than 5-6 hours to finish. I am an experienced
software developer however in most of my work, so far, I did not had to use
tricky algorithms. Hence, my algorithm fundamentals were very weak before
taking this course. This course has helped me in taking footsteps towards
conquering that weakness and with the part2 of the course (along-with
Princeton course on algorithm), I hope to have learnt enough to start working
in algorithmic domain.

**1**review**1**completed

4 years, 9 months ago

Undoubtedly must for algorithmic enthusiast, computer science interested
students.

**7**reviews**7**completed

4 years, 9 months ago

I have a BS and MS in CS. I've been a software professional for ~30 years.
This course compliments Sedgewick's Algorithms courses from Princeton and also
on Coursera. Pros: \+ Tim’s enthusiasm - “blazingly fast” algorithms. \+
Proofs had enough description to follow without getting bogged down in too
much rigor. \+ Tim’s practical advice: \+ Constant, linear and loglinear
operations are so fast that we also get them for free, so we should always
consider running them on our data sets, even if it’s not obvious at first that
doing so will help solve the problem. For example: \+ Loglinear sort your
data. Maybe sorted data will help in the solution. \+ Heap your data. Maybe
its constant operations may come in useful later. \+ BFS and DFS linear
algorithms are the fast workhorses of graph problems. If you’re not sure how
to approach a solution, just do Breadth and/or Depth First Searches to see if
either or both approaches lead to the sol...
I have a BS and MS in CS. I've been a software professional for ~30 years.
This course compliments Sedgewick's Algorithms courses from Princeton and also
on Coursera. Pros: \+ Tim’s enthusiasm - “blazingly fast” algorithms. \+
Proofs had enough description to follow without getting bogged down in too
much rigor. \+ Tim’s practical advice: \+ Constant, linear and loglinear
operations are so fast that we also get them for free, so we should always
consider running them on our data sets, even if it’s not obvious at first that
doing so will help solve the problem. For example: \+ Loglinear sort your
data. Maybe sorted data will help in the solution. \+ Heap your data. Maybe
its constant operations may come in useful later. \+ BFS and DFS linear
algorithms are the fast workhorses of graph problems. If you’re not sure how
to approach a solution, just do Breadth and/or Depth First Searches to see if
either or both approaches lead to the solution. \+ Think about your sub-
algorithm needs. For example, Dijkstra’s shortest path algorithm requires
processes nodes based upon a greedy algorithm that wants the next shortest
total sub-path link. When a superlative is part of an algorithm, such as
“shortest,” then think about using a heap or priority queue which returns
superlative values efficiently. \+ You don’t need to “solve” complicated
recurrence relations. If you have a hunch (or hope) of its form, try induction
to confirm it. Cons: \+ Some of the quizzes and assignments had confusing
wording. They should be reviewed and addressed. \+ The programming assignments
involved data that was massively larger than it had to be. A program that
finds strongly connected components in a 1,000 node graph properly will work
just properly on an 800,000+ node graph, but without straining the development
environment. \+ I don’t recall seeing Tim on the forums. A greater presence,
even if only to address clarification in confusing assignment wording would
have been appreciated.

**6**reviews**5**completed

4 years, 11 months ago

This course is truly brilliant. What do I mean by that? There is no one algo
course to fit everybody: 1) Essence of this course is in crystal clear
explanation of the material. It's especially good for people with conceptual
and birds-eye way of thinking. Problem sets are doable but you'll get
challenge problems (not graded) that sometimes are really hard. 2) It's not a
math class (like CLRS and MIT course), it's rather use this approach from UCB
textbook (p. 9): "Playing on the strengths of our students , instead of
dwelling on formal proofs we distilled in each case the crisp mathematical
idea that makes the algorithm work". 3) It's also not a programming class - go
to Princeton course. There is a programming assignment on every week but it's
by far not enough to understand proper implementation of an algo.

**4**reviews**3**completed

4 years, 11 months ago

Prior experience: I'm software developer with 5 years of experience, thus I
had a lot of prior knowledge on the topic before taking this course, but I
desired to refresh some of them. Pros: 1\. There are excellent programming
assignments in the course. There is no way to solve it without implementing
algorithms optimally. 2\. Lectures is consistent, coherent and well read. 3\.
There are challenging enought optional theoretical problems in the course.
Cons: 1\. The algorithms analysis topic coverage has flaws (e.g. amortization
analysis wasn't mentioned at all). 2\. Despite course is introductory many
students already familiar with topic, but the is no really difficult
(optional) programming assignmens in the course. Overall: I think this course
is excelent for anyone who want to familiarize yourself with algorithms. It's
also suitable for refreshing knowledge on the topic despite it is primarily
aimed to beginners.

**9**reviews**7**completed

5 years ago

Algorithms: Design and Analysis, Part 1 is an interesting course covering some
of what Prof Roughgarden calls the greatest hits of computer science. It's
focused much more on math and correctness than is Sedgewick's Algorithms
series, which deals with concrete implementations. So they are very different
courses despite having similar names. Unfortunately, this type of course
doesn't translate nearly as well to the MOOC format as the more implementation
centered course by Sedgewick. While Tim Roughgarden is a very good teacher and
he gives you the same lectures he gives his students in Stanford taking the
class (the actual Stanford lectures are available online and not too hard to
find in google), he cannot give the same level of assignments. In a course
like this you really need to do lots of proofs and derivations, so Prof
Roughgarden should really employ peer grading in future iterations of the
course to make it more like the real ...
Algorithms: Design and Analysis, Part 1 is an interesting course covering some
of what Prof Roughgarden calls the greatest hits of computer science. It's
focused much more on math and correctness than is Sedgewick's Algorithms
series, which deals with concrete implementations. So they are very different
courses despite having similar names. Unfortunately, this type of course
doesn't translate nearly as well to the MOOC format as the more implementation
centered course by Sedgewick. While Tim Roughgarden is a very good teacher and
he gives you the same lectures he gives his students in Stanford taking the
class (the actual Stanford lectures are available online and not too hard to
find in google), he cannot give the same level of assignments. In a course
like this you really need to do lots of proofs and derivations, so Prof
Roughgarden should really employ peer grading in future iterations of the
course to make it more like the real thing. The assignments aren't as good as
the lectures. The quizzes are multiple choice questions while the projects
require algorithm implementations where you type in a numerical answer that
can usually be arrived at even with lousy implementations of the algorithm,
and often even with other much more inefficient but straightforward
algorithms. I can't hold it against Tim because it's not a reflection on him,
but on the limitations of the online format. I hate to sound too negative
though, because I really did learn a lot from Tim in the course and the
lectures are of very high quality. Overall it was a great experience taking
the course. One thing I really thought was awesome was that he gave optional
advanced lectures that weren't required to succeed in the class nor to get an
excellent overview of the subject, but that filled in details in the more
difficult corners of the topics discussed. Overall I'd highly recommend the
course, but would also suggest having a textbook like CLRS to work problems
out of while you go through it. My personal highlight in the course was
Karger's algorithm for finding minimum cuts in graphs, as it's often not
taught until graduate level in a course on randomized algorithms.

**19**reviews**19**completed

4 years, 11 months ago

I completed this course with 98% score. So, if average student like me got
that percentage you know this is a good course. When compared to the Princeton
Algorithm class, this class more focuses on algorithm design paradigms and
relevant mathematical models for analysis, as said in the course info. The key
of success, (1) watch all the lectures, (2) read the textbooks (CLRS, DPV, KT,
SW), (3) write the programming code, (4) follow the discussion forum. That's
all.

**116**reviews**107**completed

5 years, 7 months ago

Algorithms Part 1 is an excellent introduction to the study of algorithm
analysis and design. The course teaches some fundamental principles of
algorithm analysis like big O notation and other important topics in algorithm
design like data structures to represent graphs, the divide and conquer
paradigm, heaps and hash tables. Algorithms discussed include quick sort,
breadth first search, depth first search, finding strongly connected
components of a graph and Dijkstra’s shortest path algorithm. The course
requires the ability to program, but it is language neutral, meaning you can
use whatever language you are most comfortable with to complete the
assignments. The material is fairly dense and the quizzes and programming
assignments are difficult if you haven’t taken a course on algorithms before.
I’d highly recommend this course to anyone that wants to get serious about
going beyond basic programming/scripting and learning some real ...
Algorithms Part 1 is an excellent introduction to the study of algorithm
analysis and design. The course teaches some fundamental principles of
algorithm analysis like big O notation and other important topics in algorithm
design like data structures to represent graphs, the divide and conquer
paradigm, heaps and hash tables. Algorithms discussed include quick sort,
breadth first search, depth first search, finding strongly connected
components of a graph and Dijkstra’s shortest path algorithm. The course
requires the ability to program, but it is language neutral, meaning you can
use whatever language you are most comfortable with to complete the
assignments. The material is fairly dense and the quizzes and programming
assignments are difficult if you haven’t taken a course on algorithms before.
I’d highly recommend this course to anyone that wants to get serious about
going beyond basic programming/scripting and learning some real computer
science.

**4**reviews**4**completed

5 years, 9 months ago

The course is difficult, but it is top notch quality, and it really delivers
the learning possibility of a real top university course. If you are reallly
interested in algorithms and willing to work hard to learn it, this is the
perfect opportunity.

Student

10/10 starsCompleted

5 years, 10 months ago

I really loved this course. I have enjoyed the art Prof. Tim makes his
lectures: he is really enthusiastic and this enthusiasm is infectious, he can
really good explain complicated stuff and he has a great sense of humor. The
subject of the lectures was also very interesting, especially the depth of
analysis. The programming exercises were helpful for understanding of
explained algorithms. Really, I liked everything! I also did the second part
of this course and it is much more complicated, but it gives you a good
feeling to became more intelligent :-) I would definitely recommend this
course and it's second part.

**5**reviews**5**completed

5 years, 10 months ago

I signed up for this course to help me better prepare for graduate studies
which I will begin a couple of months. Lacking a formal background in
theoretical topics of Computer Science, I found this course immensely useful.
I did this course concurrently with the Algorithms I course taught by Prof.
Sedgewick. I found this combination, though very hectic, ultimately very
rewarding. The theory being taught in this course was complimented nicely by
the practical Java programming being taught in Prof. Sedgewick's course. I
especially enjoyed Prof. Roughgarden's enthusiasm and teaching style. I don't
have any real complaints about the course. Two thumbs-up and looking forward
to the second part of the course.

**4**reviews**4**completed

5 years, 11 months ago

I came at this course without any formal background in computer science.
Everything I know I've learned as a result of simply learning as I go. However
it occurred to me I could never pass a technical interview because I didn't
know the most basic of algorithms that interviewers expect you to know. Pros:
\- Taking this course made me feel like a bad-ass software developer. I now
have a good understanding of algorithm complexity and how to develop solutions
in any areas where performance is an issue. \- Tim knows his stuff Cons: \-
Tim's handwriting is often quite poor AND what he is diagramming/writing often
seem to be way out of sync with what he is saying. This makes things really
confusing. I often found I had to look away from the screen and just listen to
his voice. \- In some of the other courses I've taken I really get the feeling
the professor is there to help me learn.. In this one it feels like Tim is
there to simply convey...
I came at this course without any formal background in computer science.
Everything I know I've learned as a result of simply learning as I go. However
it occurred to me I could never pass a technical interview because I didn't
know the most basic of algorithms that interviewers expect you to know. Pros:
\- Taking this course made me feel like a bad-ass software developer. I now
have a good understanding of algorithm complexity and how to develop solutions
in any areas where performance is an issue. \- Tim knows his stuff Cons: \-
Tim's handwriting is often quite poor AND what he is diagramming/writing often
seem to be way out of sync with what he is saying. This makes things really
confusing. I often found I had to look away from the screen and just listen to
his voice. \- In some of the other courses I've taken I really get the feeling
the professor is there to help me learn.. In this one it feels like Tim is
there to simply convey information. \- This course did not take advantage of
the medium. For algorithms like quick sort or merge sort I can fully
understand it with a simple animation so much easier than a long description.
See here: http://www.youtube.com/watch?v=y_G9BkAm6B8 In conclusion I think
with a bit more effort this course could be amazing. Having said that I did
learn a lot and found this to be a very valuable course.

**3**reviews**3**completed

5 years, 11 months ago

My first algorithms course. Prof was excellent; explains things in a very
systematic and clear way with great examples.

**10**reviews**8**completed

6 years, 1 month ago

The biggest problem with this class, I think, is that it's language-agnostic.
At first I thought that would be great - I can use whatever language I'm most
comfortable with - but there are big downsides to this. First, you won't get
to see sample code from the instructor after an assignment to compare with
your own. And second, since so many different languages are in use, it's hard
to get help in the forums. I made it through the sorting algorithms, but I had
to give up when we got to graph algorithms, because I had trouble implementing
the data structures. I think a better approach would have been to pick a
popular language such as Java or Python, and conduct the class in that
language. The instructor could then provide a code base that included the data
structures, and the students could just focus on implementing the algorithms.

**4**reviews**3**completed

6 years ago

Absolutely superb course, the professor is clearly highly passionate about the
topic and does a great job of explaining all the content. One thing I'd
recommend is if you aren't too hot on probability then do learn that before
the course, it is actually quite important.

**1**review**1**completed

6 years ago

What was your prior experience in the field? I work as the a lead software
engineer in a Fortune 500 company that contracts work for Defence. What did
you learn? Many complicated algorithms and more so than the ones I learned
during my University years. Also asymptotic analysis was covered in depth
which will definitely come in handy in my current work. Did the course meet
expectations? Definitely exceeded! What did you like/not like? Really like the
amount of detail put into the lecture videos. But did not like the ambiguity
of the way some problem sets were worded. How does this course compare to
similar courses? This was my first Coursera course so I do not know how to
compare. But compared to my university studies I would say it is equivalent to
a 4th year subject. I scored the highest among my peers for my 4th year study
yet I found this course quite challenging!

**2**reviews**2**completed

6 years ago

Fantastic course for algorithm. The professor is interesting and the lecture
is well organized. Great!