Back to Algorithmic Toolbox

4.7

stars

5,702 ratings

•

1,194 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.

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.

Filter by:

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 Nandan K

•Oct 10, 2017

Really nice course that get's you started to the world of algorithms. It has a balanced progression and introduction to basic concepts, but highly recommend to do all the optional assignments since they help absorb all the presented material to the fullest extent. But to solidify the knowledge gained, I would recommend to solve more problems on the introduced concepts since I feel this course falls short in number of diverse problem statements to be able to think on how to apply the concepts in different scenarios.

By Zhenya

•Nov 29, 2018

I recommand for everybody. Teachers explain all from the basic level, and you shouldn't be afraid, you will understand all algorithms from this course. I like this course and this specialization very much

Для русского язычного населения тоже очень рекомендую, английский базового уровня, преподаватели с хорошим произношением, просто огонь. Сам курс вам тоже очень понравится. Очень нравится, что сначала дают теорию, а потом сразу к этой теории задачи, чтобы вы всё смогли отработать

Thanks for this course

By Boris T

•Jan 04, 2018

Great course with the thoroughly prepared exercices and detailed video explanations for each topic. Covers a wide range of fundamental alogorithmic technicues that are good to learn for everyone who wants to become a better software engeener or just to improve programming skills. The course passing grade is pretty soft. It is enough to attentively watch the video lectures and carefully implement algorithms covered there to pass the course, however some advanced problems are really challenging.

By Fil G

•Oct 20, 2018

A very thorough introduction to the core concepts of Algorithm design, including sorting, binary search, greedy algorithms and dynamic programming. The assignment are tough with the last few definitely challenging, you will spend quite a bit of time implementing them if you are new to programming in general but there is enough help on the site (and the internet) to help you figure things out. Working through the problems is essential to getting the most out of the course.

By Tushar K

•Jul 05, 2018

This is a really well planned course. I was doing this course and auditing my on-campus course too, initially. But, I soon realised that this is what I need. It has a perfect balance of mathematical rigour and practical programming. The programming challenges sometimes felt tough, but since ample time is given to solve, I could make it in the end. Thanks to the instructors for teaching students across the globe. Knowledge is a debt that can never be repaid! Thanks

By Lee Z Y

•Aug 26, 2017

I think this is the best algorithms course I've taken so far. It wasn't too hard, but if you wanted some challenge there's always the advanced problems. Speaking of the problems, I highly recommend that you solve all the programming assignments, including the advanced questions. Even if you can't solve it on your own, search up how to do it; just don't give up. Passing is easy, but to get the most of the course you need to finish all the programming assignments.

By sudheer n D

•Aug 19, 2019

This is one of the best courses i have taken. The way these instructors come up with a problem and explain why existing techniques are not that helpful, and intuitively explaining why new method/technique would suit the problem. everything about teaching was simple yet amazing.

Moreover the assignments are also quite challenging, so they will for sure give you tough time and make you put in more effort which in turn sharpen your strengths on the concepts.

By Lucien

•Mar 21, 2017

This is a great introduction to a more formal approach to algorithms and I look forward to the rest of the courses in the specialization. The dynamic programming week was somewhat more difficult than the other weeks, but I think that could be remedied with more visualizations during the lectures.

If you're lacking in any basic maths skills, I would recommend running through Khan academy first. Functional notation and series would be especially useful.

By Kirill S

•Oct 02, 2017

This course gave an insight in the world of algorithms and taught me a number of different approaches for solving algorithmic problems (stress testing, for example). I discovered the fact that my programs didn't worked properly in all cases (I was pretty confident that they did) and realized that there are really wise solutions for many computation problems. Lastly, all course materials were explained in detail, so there were no unclear moments.

By Kevin K

•Aug 05, 2016

This course is well-designed and delivered by the experienced instructors. It is particularly suitable for those who have some basic knowledge in programming (knowing how to use if-else if-else statements, for-loop and while-loop, etc.; knowing a little bit how to write a simple code in C, C++, Python or others) and would like to enhance his programming techniques through polishing his logical thinking ability while he is designing a algorithm.

By Jonathan O

•Aug 29, 2018

I love this course. Designing algorithms in the lectures and implementing them in the weekly assignments is not only rewarding and fun, but also engaging. The test cases applied to the algorithms in the assignments are comprehensive, looking for hard-to-find, yet very important, edge cases, meaning significant testing is required for each submission, mimicking the requirements of any algorithm used outside the classroom.

Well, on to course #2!

By Souvik R

•Jul 23, 2017

So far the best course I have seen that actually teaches algorithms.This course not only explains you the algorithm but will also make you solve programming challenges based on the algorithms which requires you to look at the algorithm from a different perspective and then solve the challenge.This is what I loved the best about this course.I believe I am much better now in implementing algorithms and solving programming challenges.

By Taranpreet s

•Dec 28, 2019

The best part of the course is Assignments, as only after trying to code the algorithms one can appreciate the content of the videos and reading Material. Conceptually Dynamic Programming(Weeek5,6) is the hardest to grasp. Assignment wise I found week 4 Divide and Conquer to be more challenging. For DP assignments, pseudo-code is given for most of the questions. Thanks to the instruction team for creating this wonderful course.

By Samantha K

•May 15, 2016

I would've never forced myself to learn to think recursively if it weren't for this course. As someone from a mechanical engineering discipline, with a minimal background in java programming, i was able to following along with this course and complete all assignments. The discussion boards and professor's lectures were particularly helpful along with the fact that I could download everything for viewing offline.

By Jan K

•Mar 01, 2017

The best course I have done on Coursera. The authors have put together a great set of lectures and especially programming assignments, which really force you to think about what you are doing rather than go by trial and error. What's more, you can submit these in about a dozen commonly used programming languages so you can practise the language of your choice while learning about algorithms. Highly recommended!

By Mohamed A

•Aug 26, 2019

amazing course. if you are looking to know fundamental algorithms like DP, Greedy, divide and conquer this course is amazing.

in my opinion, this course is essential for any software engineer but if you just started your way it is better to know how to write simple programmers and be confident with basic topics like loops, conditions ..etc

i recommend python for every body as a start if you have no knowledge

By Andre C

•Jun 19, 2016

This course was a great introduction to algorithms. I am a novice programmer at best and had little to no knowledge about algorithms before this course. The concepts and programming assignments were challenging and I did not finish all of them the way I would have liked to but the challenge has made me more knowledgeable and a slightly better coder. Thank you. I will be taking data structures next.

By Alexander D

•May 16, 2017

Great introductory course. Lots of details and interesting problem sets. Extremely quick responses with the discussion forum. Great help.

One suggestion would be to be a bit better at explaining things, especially the mathematical proofs. They are quick rigorous, yes, but more emphasis should be given on understanding why in simple, human language. Then we could go over the proof together.

By Alejandro O

•Dec 30, 2017

This is the best algorithm course that I have taken, it has its problems but overall complete and the instructors guide you and seem to care for teaching well their subject.

I appreciate the work that you have done here for all of us interested to polish our skills and deepen our knowledge in algorithms.

Keep the good work guys.

*This opinion is based on the complete specialization

By ARELLANO, J (

•Oct 06, 2019

This course is really helpful, at first I was submitting my cpp files for the projects and was having a hard time on having it on a passing grade. This course encouraged me to learn how to code using python. I have a hard time understanding the lessons but it's a good thing that I can just go back and play the video over and over again in order for me to understand each lessons.

By Karan R S

•Jul 24, 2016

My programming and algorithm design greatly improved after taking this course. Through the advanced problem sets I was able to appreciate the finer aspects of efficient algorithm designing and I'm sure that I'll improve a lot with courses to come.

I would definitely recommend this course to any one who wishes to improve his/her skill set for designing efficient algorithms.

By Ashish K

•Feb 06, 2017

The course is a great first course on algorithmic toolbox. I love the way the toolbox serves as a precursor to the more involved courses. In particular, the topic of stress testing is something that MOOCs don't cover in general and lead me to give up in my earlier MOOCs.

All in all, great job professors Sascha, Daniel, Neil, Michael and Pavel.

You guys are awesome.

By Nguyen V N M

•Mar 03, 2017

The content of the course is so good. However, I think the lecturers can do better job if the have more visualisation for what they are saying. A lot of time, I felt that I couldn't follow what they was saying and then, I have to pause the video and look at the pseudo code, it much easier to understand. Btw, thanks a lot for providing such an awesome course.

By srivardhan

•Mar 14, 2017

I really appreciate the way course contents are selected in each course of the specialization , It really gives a great conceptual clarity of all the topics .

I find a bit difficulty in understanding Big O notation so please try to give some more reference to understand it and also provide some general techniques to calculate it from just looking at code.