Back to Algorithmic Toolbox

4.7

stars

5,828 ratings

•

1,220 reviews

The 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).
Do you have technical problems? Write to us: coursera@hse.ru...

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

Mar 06, 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?

Filter by:

By TIANYI X

•Jun 17, 2018

taking this one right now and almost give up. I got no support from the faculty or mentor, questions on the forum are rarely answered. If you get stuck in the problem you are pretty much wasting your time. I am not saying you should look at the answer right away, but if you have no clue what to do, answer should be provided to help. BUT THERE IS NOTHING THERE.

By Edson J A M

•Mar 21, 2018

I tried to have this specialization and canceled before the 7-days free because the explanation is so poor by the teacher.

When seeing about Big-O notation is possible to see a poor explanation and most of the time you need to access a content to other source as KhanAcademy. It's not acceptable.

By Andrea L

•Sep 01, 2017

Very unsatisfied. At the end, I feel I learnt nothing.

1 - Explanations not always clear

2 - Too many exercises in the assignments

3 - Some exercise was not very useful and takes much time to understand what they want exactly.

4 - Price is too high per month for this course.

By Magnus P

•Mar 05, 2017

I don't recommend this course. The lectures barely touch on the topics being taught, you are expected to go learn on your own. I learned more from the free Khan academy than from this course. It would have been worth more buying good literature on algorithms.

By Pedineedi N s

•Aug 31, 2018

i'm unable to understand why my code is getting an error in your compiler. Because I had checked my code in various online compilers also, It is rediculous and I totally lost my patience since i was trying from past 10 days.

By Rohan G

•Apr 22, 2018

The course is OK. But there is no mentor to answer the question in the discussion forum. So in case of any doubt no one is there to help.

By Yifei P

•Nov 25, 2017

Too bad. I do not know how to run the program on my Mac. The professors' voice also made me annoyed.

By Sandeep M

•Nov 09, 2019

lack of proper explanation and no beginner friendly content.

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 Vlad_N

•Jan 05, 2018

It's been an amazing journey! I've enjoyed, struggled through and finally managed to pass the test cases for all problems. It's been amazing. I've learned a lot. And moreover I've researched a lot while working at the problems, I've used books recommended in references, some books on Python algorithms, discussion forums and google and youtube, when I got really stuck. Every next week was more challenging for me than the previous one. Two of the most challenging problems for me were closest pair of points and longest common subsequence of 3 strings. But the rest weren't much easier ;)

I'd definitely recommend this course to anybody who's just starting out in programming and who wants to boost her/his problem solving skills.

I've been using Python3 and MacBook and I didn't have any problems with grader or submissions, except for wrong answers and time limit exceed, of course :)

Thanks to all instructors, I truly appreciate the amount of work you've done to put it all together! I'm very glad I've chosen this course as a starting point in learning algorithms and data structures. Thank you!

By James B

•Sep 17, 2016

I found the assignments challenging in the absolute best sense of the term, and therefore incredibly rewarding as well! Whenever I've gotten stuck, the answer was always in the course material somewhere, even if I didn't see it there at first. The discussion forums were extremely helpful, and I was astounded to see that that instructors were still actively monitoring the discussion forums and responding to student questions. I'm obviously not an expert in this field, but I've been an educator before, and my own impression of the assignments was that they were extremely well designed: it was impossible to pass them without knowing what you were doing, the tools to approach them were always found in the lectures, and the challenge problems pushed your knowledge even farther. I would recommend the specialization to everyone. Additionally, I noticed that the content aligns well with other DS&A syllabi I have seen in brick-and-mortar institutions, especially the first 3 or 4 courses. It's also a very nice luxury to be able to submit in Python. I have certainly learned a great deal.

By Do H L

•Apr 04, 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 Roger T

•Jun 09, 2016

Excellent coverage of algorithmic techniques in this course, with very accessible introductions to such fundamental topics as the Master Method, greedy algorithm design, and dynamic programming. This class hits the sweet spot for people who find Tim Roughgarden's Analysis and Design of Algorithms course too intense and hand-wavy, but who still want mathematically-sound, proof-based discussion of algorithmic techniques. (Listen to Roughgarden's drive-by treatment of Karatsuba's algorithm in his first week of lectures, and you will appreciate Neil Rhodes' coverage of the same algorithm all the more.) You get an introduction to a lot of "greatest hits" from Computer Science, but at a level where you come away understanding the technique. The problem sets start off with fairly easy exercises, just enough to reinforce your understanding, and progress up to exercises that will prove challenging indeed to newcomers. You will get a lot out of careful study of this course. I look forward to continuing in this specialization.

By Tristan B

•Feb 25, 2016

If you want to learn more about both theoretical and practical computer science, do this specialization. I'm completely sold on this specialization after one week. The instructors are extremely helpful and have a high level of clarity both in the videos, and on the forums. The language semi-agnosticism is excellent! The forums are active and friendly! You will hit the ground learning right away with this specialization!

This course has so far motivated me immensely to delve further in to my software engineering education. I did not get a Bachelor's degree in Computer Science, just an Associate's. Though I work in the industry, I wanted to do programming competitions and personal projects to make up for the lack of experience with the ideas and implementation of algorithms and their data structures.

This course has jump-started my journey beyond my current abilities, and I believe it will do the same for you. If you're even remotely thinking you would be interested in taking these courses, do!

By Sergey L

•May 14, 2016

I always wanted to improve the algorithms and data structures field. The books wasn't so efficient. Especially they weren't so practical. These courses are the first courses where I really got a lot of knowledge. Especially because of assignments. All lectors are very good in explanation of the material and tell many additional useful things. These courses are the really good base, after which you can open the books related to algorithms and read more details if you needed.

I am definitely going to complete the whole specialization!

The only thing which was not convenient for me is that both courses Algorithmic Toolbox and Data Structures are started at the same time. It was difficult to find out the time for both courses and spend enough time to solve all assignments instead of only enough for passing.

Anyway, now I am started the second iteration of the course and I am going to solve all assignments which I skipped.

Big thanks to Daniel, Alex, Pavel, Neil and Mike!

Regards,

Sergey

By Vishav V K

•Jun 12, 2017

I must confess I was a bit hesitant to start this specialization. But after 3 weeks in, I am very happy that I started with this specialization. The course has the right pace and instructors have very nicely divided the videos in shorter logical entities which are easy to understand. I love the exercises. All the other exercises in other courses that I have taken for coursera provide you with a lot of code already done and you just have to write a very small piece of code to complete the assignments, but not in this one. We need to write the whole assignment on our own, right from choosing the appropriate data structure and algorithm design. They sure have a starter code but I only look at them once I have some solution, in order to do a check of my code design as well.

I must say, this is an awesome course. Great work guys putting this together.

By Matheus R

•Jun 18, 2018

I'm still in week 2, but so far I'm loving it. It's far more interesting and engaging than I thought it would be, and not as hard as I thought it would be. It requires some programming experience (a few months of practice and maybe a more advanced understanding of your programming language of choice will do) and the "mathy" way some algorithms are explained can be a little scary for who hasn't a good maths background (like me!) but don't let it scare you away. Everything is actually much simpler than it looks like and the only real demand is some patience and a willingness to find new ways to solve problems. Every time you an assignment right, you feel like you "leveled up" your problem solving skills a little bit. Totally worth it. Looking forward to the rest of the specialization.

By Andrey T

•May 22, 2016

This is a good course, and I liked the quality of video lectures. The material is structured and lets the students understand the basic approaches they can follow to solve algorithmic tasks.

Also a good plus is that there are assignments. First, they are of different complexity - so anyone will find an interesting task there. Second, there are prepared starter files for 3 languages - so you spend time working on algos, not on bootstrapping projects. And third - grading is automatic.

Just for fiuture - as a more engaging thing there could be also made tasks to review of other people's assignments (as it is done in other courses) and implementing a test case which makes a wrong solution to fail (which is something like TopCoder does). But this idea is too raw and needs more thinking.

By Michael B

•May 29, 2016

A great course in its own right but it also fills a void between the "Learn <programming language>" and using programming languages to analyze Big Data. The instructors have put together an excellent introduction to the wonderful, and scary, world of algorithms. I must admit I was ready to send my PC flying through the window on numerous occasions when I could not get my particular implementation of an algorithm to run within the time AND memory limits set by the instructors. More so, because often you are not told what particular test case made it fail. In the end, I believe this is a great approach to have learners really dive into the material and think about the various run times before submitting a particular solution. Well worth while your time!

By Abe E

•Aug 20, 2017

Lots of good problems. The bar to pass is very low, but I felt I actually learned by completing the whole thing. There is a forum with some helpful advice on some of the problems. The easiest problems are the ones you just copy the algorithm verbatim from the slides, but there are some more interesting problems with terrible edge cases, like the minimal distance among n points.

They follow the textbook pretty well, so you can pick up that book for cheap and read it too! I liked most of the lecturers, but a few I could have done without and ended up referencing other sources as a result. I learned a lot and will continue in the specialization.

By Theodore G

•Oct 23, 2016

Congratulations for this well-designed, informative and extremely educative course! The language agnostic way of presenting and explaining these basic but important algorithmic techniques provides an extremely useful way to better understand and further elaborate these methods by using the programming language of our choice. Of course, some programming experience in at least one language is needed, but this course can also provide a great lab to start learning others. The programming assignments and the way you have designed them (time/memory constraints) are ideal to learn designing these algorithmic techniques correctly and efficiently.

By Chen X

•Feb 18, 2019

Pros:

Great practical programming assignment questions.

Some very nice lectures and problem explanations, especially in asymptotic notation and scaling, D+C, and dynamic programming 1.

Cons:

Some annoying mistakes in the python3 assignment boilerplate code for inputs. Like overriding the 'input' function name with a variable.

Did not give rigid definitions of types of programming. Greedy, D+C, dynamic.

Should have been more rigid in defining problem steps in the greedy algorithms chapter. Seemed waffly.

The course textbook they recommended buying was basically just the problem statements + lecture notes. Not useful.

Overall, a solid course.

By John B

•Dec 30, 2017

This was a well developed and taught course. The programming assignments were just the right level of difficulty, and the system for submitting assignments worked very well. I learned a lot about the content, and feel stronger in my programming abilities and computer science knowledge.

The only critique I would have is that some of the slides where the algorithms are written out have some confusing notation (using w and w_i in the same line of an algorithm for one) and sometimes the index conventions seemed not to line up with the usual "starts at 0" format. Even still it was always easy to correct for this.

By Shiv W

•Oct 30, 2018

This Course is really very helpful in understanding the basic algorithms and various efficient problem solving technique. Week assignments are very good and helped me evolve my skills in implementing solutions and to consider every possible kind of instances for a problem. I loved the lectures and the way professors explain things and touch every aspect of the topic. I enjoyed this course very much and have learnt much more than what I thought I required. I am really very thankful and grateful to the professors and the Coursera. Thank You Very Very much. :)

By Shreyansh K

•Aug 03, 2017

I always feared coding problems on divide and conquer and dynamic programming. The way this course gradually took me from easy stuffs to advanced was awesome. After doing the course, I feel confident on coding difficult problems. I also appreciate the granularity of topic that this course covers. I took many courses but nowhere until now, I have seen courses that cover how to test and debug your code. Great Course and much take course in case one wants to get good at competitive programming. Good Job teachers. Your efforts are appreciated.

- AI for Everyone
- Introduction to TensorFlow
- Neural Networks and Deep Learning
- Algorithms, Part 1
- Algorithms, Part 2
- Machine Learning
- Machine Learning with Python
- Machine Learning Using Sas Viya
- R Programming
- Intro to Programming with Matlab
- Data Analysis with Python
- AWS Fundamentals: Going Cloud Native
- Google Cloud Platform Fundamentals
- Site Reliability Engineering
- Speak English Professionally
- The Science of Well Being
- Learning How to Learn
- Financial Markets
- Hypothesis Testing in Public Health
- Foundations of Everyday Leadership

- Deep Learning
- Python for Everybody
- Data Science
- Applied Data Science with Python
- Business Foundations
- Architecting with Google Cloud Platform
- Data Engineering on Google Cloud Platform
- Excel to MySQL
- Advanced Machine Learning
- Mathematics for Machine Learning
- Self-Driving Cars
- Blockchain Revolution for the Enterprise
- Business Analytics
- Excel Skills for Business
- Digital Marketing
- Statistical Analysis with R for Public Health
- Fundamentals of Immunology
- Anatomy
- Managing Innovation and Design Thinking
- Foundations of Positive Psychology