Chevron Left
Back to Algorithmic Toolbox

Learner Reviews & Feedback for Algorithmic Toolbox by University of California San Diego

4.6
stars
12,463 ratings

About the Course

This online course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second)....

Top reviews

SG

Jan 19, 2017

I liked the fact that the algorithms are not just the introductory searching and sorting algorithms. The assignments are fairly difficult (I have decent scripting experience), but not impossibly so.

BD

Jan 19, 2021

The course was really amazing which provided deep knowledge from basic to advance that how algorithms works and how to design algorithms. Thanks to all the expert teachers who taught in this course.

Filter by:

1 - 25 of 2,565 Reviews for Algorithmic Toolbox

By Greg G

•

Apr 25, 2019

I have a Mechatronics MSc and now I'm transitioning to CS after starting to work as a software developer. Even with an engineering background, this course was challenging: you need to think hard when designing algorithms, then precisely design and test a solution. (Stress) testing is a concept that is frequently used in everyday software development, too.

For some assignments, you'll find the pseudocode in the slides so those need less brain power to implement but for others, you'll have to come up with your own original solution. This requires time and research. It's possible to ask others in the forum or Google around for hints, and most assignments can be solved in multiple ways (e.g. I solved several of the dynamic programming assignments with memoized recursive functions). You won't find many hints from the teachers, though since that would spoil the learning part here - the essence of the course is not in the slides but in solving the assignments on your own.

Upsides of the course are the automatic grading system, the diversity of the assignments and the quality of the mathematical content and the slides.

Downsides of the course are the sometimes bad accent of the teachers - this could be eased with more accuraate captioning for the videos -, and the clumsiness of downloading slides (they are not available in one package, and trust me, you're going to use them a lot!)

Prerequisites for this course: you will need linear algebra knowledge to know about e.g. geometrical series or limit values, and you will need to know how mathematical proofs work. This is all advanced high school or 1st semester college material, so nothing special. Fortunately the teachers always point to extra links if you're in trouble.

Also, you'll need working knowledge for 1 programming language. Fortunately for many languages, you won't need to care about I/O, it's already in the starter files. I learned Python just for fun, during this course for example. All that is needed is basic control statements (loops-if), arrays and functions, nothing more.

Tips: 1. Don't give up! 2. You don't need to solve all the assignments, the ones after the minimum level are usually more advanced. 3. When in trouble, stress test if you can, it helps a lot. 4. If you're confident, you can 'make a run for it' and submit your file - you can submit as many times as you want.

By Mohit S

•

Aug 7, 2017

It is very difficult to understand what the hell some of the lecturers speak as they eat up half of the words they speak. Also the transcript of the video shows incorrect words. Have to repeat each damn video a gazillion times to understand

By Brian T

•

Aug 9, 2019

I was able to complete the entire course, however I do see a LOT of room for improvement.

The transcript has many incorrect words. If the lecturers are reading off a script, then it doesn't seem like it as many of them accidentally mess up their words. This can confuse novice learners. The slides appear to be the critical portion of the course, with the lecturers explaining what is on the slides and little more.

I used Python for this course. Most novice learners will be using IDLE and not touch anything related to PyCharm (or, like me, already have PyCharm Community installed rather than PyCharm EDU and would not like to experience the annoyance of having to install yet another PyCharm). Much of the input for the autograder relies on sys.stdin, which would read files stored on the server. However, for client testing on IDLE, this needs to be replaced with an input() function so that you could test for bugs. Novice learners may not know how to do this and will experience frustration when their input isn't accepted.

Many of the lecturers are probably not native English speakers, and that is not a problem. Personally, I can easily understand what they were saying. However, other people who do not have experience listening to those with more pronounced accents may have difficulty understanding the lecturers, and the accents will obviously not help when it comes to understanding new and difficult concepts.

The usage of pseudocode is understandable, as people will be coding in multiple languages. However, I would recommend that the pseudocode use names such as "max_array" and "min_array" rather than simply "M" and "m" with the lecturer having to remind us which is which. Same for indexes, don't use "i" and "j", try to use "row" and "column." This will teach us good coding habits (use descriptive names) while making explanations clearer.

Of all the courses, the "worst" part of the course is likely the weeks involving Dynamic Programming. Dynamic Programming is a very difficult but also very important. Most novices will have never seen the concept of Dynamic Programming, so the need for a clear lecturer and in-depth explanations becomes much more important. However, the explanations are rushed (which is not good as 2D arrays are being used more and are much less intuitive). Also, I'm surprised they didn't talk about shortest paths/number of paths, which would help people get used to 2D arrays.

Finally: Unless you are already experienced in these algorithmic concepts, the time you need to complete this course is probably much greater than the course's estimates. Be prepared to dedicate yourself.

By Tom A

•

Dec 23, 2018

Aren't we paying for mentors to respond to posts in the discussions? I don't need to pay you monthly to be ignored while I struggle to learn on my own.

By Mayukh S

•

Feb 15, 2019

This is the best and the toughest course I've ever come across. I'm definitely a better programmer now. It completely changes the way you analyze the problem. Totally awesome.

By Josh F

•

Apr 25, 2019

Opted for 5 over 4. Not a perfect course but damn close: Assuming 'basic knowledge' one of the languages suggested should also have as a pre-requisite 'introductory computer science' since having an ability to code in say python at a basic level doesn't necessarily mean you understand anything about file and bitstream IO, or other useful abstractions that will make this course a wee bit more interesting.

Anyone who doesn't have a strong grasp of CS principles shouldn't be dissuaded however, it just means that your learning curve will be steeper. The trick is digging your heels in and researching the problems, sticking to your guns and hammering out even the most ugly of code until you have a correct solution... AND THEN trying to make the thing faster. You will get faster at writing our your plan, faster at implementing, and learn to read code line by line to understand what is happen beneath the abstraction.

I'd also urge people to avoid using built-in functionality of your language to solve a lot of these problems, ie. in the Majority Element problem, you *could* just use python's built-in counter to count instances for you but by doing that, do you really understand what is happening beneath the hood? Do you really understand what the output of that abstraction is doing? Probably not. So do it the 'by-hand' way and then take advantage of the built-ins when you rewrite the code for your own use or to put on your repo.

All in all, a great 'trial by fire' course if you're a novice, and if you're not a novice, it will help make you a better programmer. For sure.

By Satesh P

•

Apr 21, 2018

It was an awesome first week. Great second week. From the third week I couldn't understand the concept being taught. It was hard to understand the professor and follow along. The terminology being used is advanced and it was too hard for me to pay for the course and then have to do my own research to catch up.

By S. U

•

Jul 11, 2020

A very promising first week or two, and it went completely downhill from there. This was supposed to be an algorithmic toolbox course. Instead, the course is about trying to figure out what weird edge cases the instructors can come up with. Have fun testing your code with no idea what the inputs are. "This will help you learn" - no it won't because even when the grader magically accepts your answer, you don't know what problem you just solved.

The latter weeks, the concepts get significantly harder - dynamic programming is covered in a five minute video of which half is spent on discussing how it came to be called 'dynamic programming', and you're then asked to go solve a bunch of difficult DP problems, all without knowing what inputs are being tested.

If you don't mind spending hours and hours on your own going through youtube videos and trying to figure out what is being taught, knock yourself out - but seriously, why give these guys your money, go give the Youtube guys your money. They actually earn it.

By emmanuel g

•

Mar 26, 2017

I would like to give this course worse than a 1 star. The course explanations are very poor. The explanations drag on and make no sense. I had to go to outside sources to make sense of what the videos were discussing, which I felt like defeats the purpose. Why am I paying for something when I have to use other sources to better explain. I would never recommend this course to anyone. Listening to these teachers explain each subject poorly was killing me. I like to learn through examples but what they provide just makes it more confusing and hard to follow. Each instructor got worse and worse! The videos were so hard to watch and the accents made it even more worse! I feel robbed from taking this course. I should have asked for my refund within the first week, but I felt since I was paying, I would stick it out a little longer. You will get a better explanation if you take each subject and youtube the videos on each subject. Very useless course. Hated every week of this course and I wouldn't dare to continue with the full specialization program. It's very sad to hear that this course gets recommended a lot, but it missed it's mark completely.

By Sandhya G

•

Jan 19, 2017

I liked the fact that the algorithms are not just the introductory searching and sorting algorithms. The assignments are fairly difficult (I have decent scripting experience), but not impossibly so.

By PUCHALLA S P R

•

Feb 10, 2019

The course is perfectly designed. The perfect start for those who start with data structures and algorithms. The Dynamic programming was a little bit tough but overall course is perfectly designed

By mugnaio

•

Sep 29, 2017

good course, I like the fact you can use a lot of languages for you programming exercises, the content is really helpful, I would like to have more indications from the grading system to save time.

By Dheepak J

•

Mar 14, 2019

Truly amazing course in which the instructors have the knack of explaining complex things very easily so as to be understood by a learner at the beginner level or at the intermediate level. I am so lucky to have completed all the assignments that were posted to me week on week and come to a very thorough understanding of the algorithmic tools and techniques... Well done San Diego team for your effort. Continue empowering the algorithmic knowledge of the world wide software community.

By Anoubhav A

•

Sep 11, 2018

I have taken many courses on Coursera. This was hands down the most challenging, intellectually stimulating, painstaking and all in all fun course. The number and quality of problems in the assignments were much better compared to any other course. I have learnt alot from this course in a span of few weeks. I can't wait to get started with the second course on Data Structures offered by them!!

By 江祖榮

•

Jul 4, 2019

I learn a lot of solid programming/debugging skill and algorithm frameworks such as complexity analysis,

divide-and-conquer, greedy, dynamic programming, top-down recursive with memorization

as well as stress test, and random test to ensure output correctness and corner case handling.

To be honest, this course is really challenging but the outcome of progress is sweet and worthy.

By Eugene K

•

Jan 10, 2020

one of the worse learning experiences.

they might be good at their field and most probably they are, but because they don't know how to teach the output is close to zero.

every piece of this course is bad.

presentation are either blank reading the slides with Zuckerberg face or some overly emotional recycling from Daniel M Kane, man is stresing every following sentence, it is impossible to follow.

Content is classics of former USSR educational style: dry, high context, with some small explanation moments in more easy parts and sometimes completely skipping complex parts. leaving huge parts of material to external sources or complimentary book.

Quiz questions are sometimes formulated in some entangled manner so it's a puzzle of itself just to untangle them. not to mention that some quiz format are utter failure, like the one where you have to input 6 digits corresponding to answer option rank.

the "best" part were programming assignments. so you work thru the lecture and doing some quiz, somehow you get some understanding of how to solve some types of problems. and then bam 8 programming assignments of which only 3 types where discussed in lectures. what's the point of having lectures at all? i mean, without lectures there would 8 types of problems I wouldn't know how to solve, not a big increase from 5.

before I took wonderful course from prof. Tim Roughgarden. It had everything: good presentation style, enough of redundancy in lecture material to get better understanding of more complex topics, nice quiz question with simple answer mechanics and most important, the material you got was enough to do assignments. for some reasons I decided not to lock myself into one source of information and explore other options. waste of time.

So if you want GOOD course on algorithms don't waste your time on this one. go directly to prof. Tims Algorithms specialization offered by Princeton

By Huynh L D

•

Apr 4, 2016

I finished the first session of Master Algorithmic Programming Techniques, the Algorithmic Toolbox course. This is an amazing course. To review why this course (and series) is awesome:

1) 25 + programming assignments, ranging from easy to advanced.

2) Unlike many other CS courses, this course allows multiple programming languages. You have choices of C C++, Java, Python2, Python3. They may add more to the list :).

3) Super active forum, the learners come here to debate approaches and share knowledge a lot. There were so many times I'm convinced my algorithm can't be optimized anymore, then another guy came in with another genius idea.

4) Plus, the instructor, Mr. Alex S. Kulikov is a super nice guy, he made 300+ forum posts in the first session alone, to guide learners thoroughly.Comprehensive grader: grades you on correctness, time use, memory use. You have no choice but to optimize all 3 aspects to pass.

This course has premium access. However, both the quality and quantity are well worth the price. You can read other learners' comments and many agree with this.

By Debashis G

•

Sep 15, 2016

If one has taken the Algorithms 1 and 2 course by Profs. Sedgewick and Wayne, this course will be a disappointment and waste of time.

By Timmy J

•

Nov 28, 2017

Thank you to all the instructors for this wonderful course. I know that it must have taken a tremendous amount of preparation to not only get the course contents in this wonderful format and order, but also preparing the assignments in such an enjoyable and edificational format.

I would like to thank Mr. Kulikov and Mr. Levin in particular for their wonderfully fluid, pithy, and powerful teaching style. I am taking the Data Structures course in parallel, and I find the teaching style of Mr. Kulikov in particular works beautifully for me personally.

The greatest takeway for me from this course is my newly-found confidence in Problem Solving, not merely learning the algorithms themselves, and this is a skill that the course content forced me to learn through hard work and deep thinking. Prior to this course, my proof skills were truly pathetic - I could generally come to the optimal solution through "intuition" and "gut feeling", but I could almost never prove why the solution was correct. The substantial focus of this course on proofs is an invaluable gift for those willing to partake of it.

I tremendously enjoyed this course, and again, thank all the instructors for their time and knowledge. Thank you!

By Kyle C

•

Jun 26, 2018

This was a pretty great first into to algorithms. Took me from essentially no formal experience to feeling pretty confident about where I go from here (CLRS, cracking the coding interview, etc). The only feedback I have for the instructors are: some of the lecturers don't have good english and it borders on impacting the comprehensibility of the course. Usually the subtitles fill in the gaps -- but in the latter half of the course these are often wrong as well. Fixing these would be a huge help! Thanks for creating such a useful resource.

By Wilfried

•

Nov 10, 2018

Splendid! The course material is rich, the teachers explain very well, in great detail and the exercises are pretty challenging, not to mention the set of compatible programming language one can use is very large. I loved it!

I would recommend this course to anyone serious about learning algorithm analysis and design, this is a great place either to get started or to enhance your current capabilities.

By Maxim B

•

Mar 6, 2018

Cool course. Thank you! One suggestion about your book (Learning Algorithms Through Programming and Puzzle Solving): could you add some theory which would serve as a brief reminder before problems?

By Anya G

•

Aug 6, 2019

Thanks for the course, it was instructive! I like that some problems require implementing algorithms discussed in lectures, while others are quite challenging and are very satisfying to solve :)

By rahul s

•

Dec 23, 2018

This course is just awesome and outstanding in every term. Teachers are very good at explaining even the toughest of problems and really helped throughout the course, i enjoyed and leaned a lot.

By nguyen d

•

Jul 1, 2019

The material is quite really well-prepared and lecture is really understandable. Highly recommend this course for whom want to consolidate Algorithm and Data structure knowledge