Save for later

Algorithmic Toolbox

Data Structures and Algorithms,

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).
Get Details and Enroll Now

OpenCourser is an affiliate partner of Coursera and may earn a commission when you buy through our links.

Get a Reminder

Send to:
Rating 4.5 based on 1,174 ratings
Length 7 weeks
Effort 5 weeks of study, 4-8 hours/week
Starts Jun 26 (44 weeks ago)
Cost $79
From University of California San Diego, National Research University Higher School of Economics, HSE University via Coursera
Instructors Alexander S. Kulikov, Daniel M Kane, Pavel Pevzner, Neil Rhodes, Michael Levin
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Algorithms Software Development

Get a Reminder

Send to:

Similar Courses

What people are saying

dynamic programming

good courses tough programming questions to practice The course is very nice and i enjoyed most of the parts, however i think we can do better in the dynamic programming lessons , it was very hard to keep up with the instructor.

2nd part of dynamic programming is not explained detailed enough.

very informative course and assignment is full of challenges The contents on dynamic programming is not as easy to follow.

A good review of basic algorithm It is very detailed course, and have all the standard problems Best decently passed and well up to date algorithm course out there The last topic (dynamic programming) was significantly more challenging than everything else in the course.

The best tutorial to study algorithmthe three approach to solve a problem is awesomeGreedyDivide & conquerDynamic Programming i loved it.

The one about "dynamic programming" lacks depth.

My only critique is that some of the lectures (especially dynamic programming lesson) were difficult to follow.

I get that English is not some of these guys' native language (it's not mine either), so they can't make everything as information-dense as native speakers, but there were a number of confusing parts, mostly in the pseudo code or the general explanation of the algorithms, especially in the Dynamic Programming module.It was an OK experience and I learned quite a bit, but I'll probably be dropping this specialization in favor of another one that tackles similar subject matter.

It covers measuring the efficiency of algorithms in general, and an introduction to the Greedy, Divide-and-Conquer, and Dynamic Programming approaches.

Assignments are great as well.However, I did feel that the Dynamic programming lecture for week 05 could be slowed down or improved.

:) Really great course for an introduction to greedy, divide-and-conquer and dynamic programming techniques.

Especially in the Dynamic programming lectures.

Since the concepts are deep especially in dynamic programming, one may find it not very clear during the first attempt, but as I said one should apply himself a lot for the better outcome.

Do wish the last chapter on dynamic programming could have been better explained or split into 2 weeks.

Read more

computer science

One of the best Computer Science algorithm courses (and hopefully, entire specialization) on Coursera's new platform.

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.

A must to do course for everyone interested in Computer Science Good Course overall but instructor support is weak.

A must have course for people beginning their study in computer science.

Tutorials are wonderful everything is explained very clearly and hints are given at each point overall good for computer science undergrad.

I'd recommend this course to existing developers without a computer science background.

Basic course for Computer Science graduates.

You get an introduction to a lot of "greatest hits" from Computer Science, but at a level where you come away understanding the technique.

If you want to learn more about both theoretical and practical computer science, do this specialization.

I did not get a Bachelor's degree in Computer Science, just an Associate's.

Yes, the course really helped me a lot because i'm a student from non-computer science background and this course has a lot of good content and helped me to think about the problem more effectively.

I graduated from Computer Science.

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.

The assignments and quizzes are very thought provoking and teach a lot about problem solving approach to many classical problems in Computer science Excellent course I loved this course because overall the course content was good.Since grader output was not giving much clues on the failure helped me lot in stress testing the code my myself.

Read more

test case

I've enjoyed, struggled through and finally managed to pass the test cases for all problems.

thanks a lot to the Coursera and Course instructors.Some test cases shows only wrong answer not any information about why and what is going wrong A little hard to find what is wrong with your code specially when it gives the current answer with examples on the pdf file Course content generally was interesting, though explanations were sometimes hard to follow.

I am quite sure there is a mistake in the test case, which cost me hours and hours.

Overall, the programming assignments are very time consuming and lack of support and not showing test cases make things worse.I do not like that we cannot see the test case where our program fails.

The main thing is to analyze the test case that fails and understand why, it will bring the same result without wasting time and feeding anger, Some lecturers have a strong Russian accent, that is very distracting.

It's really insightful, It would be great if the test cases for each problems, shared with the student.

You need to use various methods to find edges cases and though that might be a good skill to have as well, it's just too much to get done in one week and somewhat frustrating when you're only stuck in one test case.

More so, because often you are not told what particular test case made it fail.

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).

Testing cases are claimed to be generated randomly, in that way why can't we get the random test case to improve our result?

Very detailed and well covered More information should be given for the failed test cases.

Everything is good, except the test cases in the assignments are not given.

It takes a while to debug without test cases.

At least we should be given the failing test case.

Read more

divide and conquer

good for starter student The chapters about "greedy algorithms" and "divide and conquer" are well done.

It makes you think a lot I really enjoy this course, and I can definitely say that this specialization is perfect for those who would like to learn programming from the base and use it in different languages I always feared coding problems on divide and conquer and dynamic programming.

It stresses more on how to classify any computer science problem and apply the appropriate technique( divide and conquer, greedy or dynamic programming).

Divide and conquer and dynamic programming new to me, have learned a lot.

There have been some problems in divide and conquer section though.

Great course to understand different categories of Algorithms and which one to apply to solve a problem This course works on fundamental approaches, like divide and conquer, greedy algorithms and takes us to the more advanced dynamic approach which is ubiquitous and drives most of the modern applications.Really beneficial to solve problems on a day to day basis.

I like stress test and the basic concepts including greedy, divide and conquer and dynamic Programming- Thanks Maybe it said this somewhere, and I just missed it, but the grading metric is based solely on the number of assignments you do.

I have learnt a lotIn the divide and conquer section, nevertheless, I found the lecturer speaking quite fast and it would def help is he can explain things in more details using more layman terms Definitely useful!

Assignment wise I found week 4 Divide and Conquer to be more challenging.

It's a wonderful course in which I learned details of greedy algorithm, divide and conquer algorithm and dynamic programming.

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

We have to think about which concept to apply to solve the problem(like divide and conquer, greedy approach, etc..).

Read more

test cases

A good course for those who want to start to learn algorithms, the test cases are well-designed.

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.

Two main issues I faced were these:Dynamic programming part one lectures were very poor and hard to understand as a result of which I had to view external sources to understand the topicSecondly, the idea of not showing test cases is a bit strange as understanding the failing test cases do not really come in the way of understanding algorithm, it simply makes the questions much harder and tedious to solve.

My only request is, please reply to forum comments as it is difficult when programs fail and we do not know the test cases they failed on!

Read more

algorithms and data structures

It's not easy, but this is a great introduction to algorithms and data structures.

I'm very glad I've chosen this course as a starting point in learning algorithms and data structures.

ie test case 4/13 in the minimal dot product assignment I always wanted to improve the algorithms and data structures field.

This course helped me to think loud on a given set of problem This is the best course on Algorithms and Data Structures online.

good learning platform dynamic programming is hard I Didn't find it useful for learning as a beginner in algorithms and data structures.

Read more

rather than

Rather than the use of just pseudocode, I prefer to see the use of the intuition of the pseudocode via an example.

IMHO this is bad coding for i/o.Organizers need to understand that working professionals are pressed for time and automation should help them rather than frustrate them and lead to loss of time.

Rather than providing explanations like: "We don't need to go into detail on this, only x concept from it is important for what we want to focus on.

Perhaps unsurprising, as these competing services often feature professional communicators rather than professional researchers.

Wonderful set of assignments emphasising on conceptual understanding rather than mere theory.

I spent more time figuring out how to submit my assignment rather than working on my assignment.

First of all, variable names are confusing and do not tell you what this symbol holds at the first glance, just like how the whole course was taught in a mathematical way rather than programming way, variable names are all like i, j, s, t, l .... when we could have made them into something meaningful and readable.2 - Since only Pseudo codes were given, it's hard for newer students to learn how a working algorithm actually looks like and how it runs at each step.

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).

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.

Read more

make you think

The quiz between videos are relevant and make you think about what you just learned.

They actually make you think about what you were just presented, rather than just asking you to spit back out what you heard.

They are not easy and really make you think and work.

Lectures and quizzes are okay, assignments are great to make you think deeper about the topics.

Read more

discussion forums

All the people in the discussion forums all have programming experience, so if you're completely new please don't enroll because if you ask basic questions, it's hard to get an answer because everyone is busy discussing about algorithm efficiency, memory usage, etc.

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.

However, I do feel that the discussion forums are enough to help you through all of the programming tasks.Programming assignments aren't really friendly to Haskell's list, and vectors are not available.

I like the assignments provided in the course Really enjoyable, and a good learning curve A good course , programming assignments are also good , even the discussion forums are good.

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.

The problem sets are great and probably worth the price, but the lectures become very hard to follow after week 3 and the discussion forums are very disorganized - it's hard to find useful information.

(Too ACM now) Course is overall great but some cons as per me:1) The instructor`s accent was hard to catch sometimes.2) I know Discussion forums are for students and testing solutions is one of the most important part but after trying for so much time, there are times when one cant catch the failed test case and neither other students(atleast those who posted).

Read more

algorithmic toolbox

Thank you coursera for allowing me to learn and improving my knowledge in algorithmic toolbox.I feel very lucky and blessed .

Love course The course is a great first course on algorithmic toolbox.

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.

I finished the first session of Master Algorithmic Programming Techniques, the Algorithmic Toolbox course.

Excellent course , helped a lot to learn and explore new ideas and algorithms.Thank-You Algorithmic Toolbox best course The course has multiple limitations and can improve a lot more.

excellent course My first MOOC, I learned so much, the lessons are clear and the exercises diversified, I encourage everyone to do the Algorithmic Toolbox, you will surely not regret it.

Read more

grading system

The Grading system and the Scenarios needs some improvements.

good 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.

The team is doing a great work improving it all the time and the grading system and lecture are really good as well.

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!

It helps with learning algorithms in a very neat and organised way.However, the grading system is little bit hard to use.

great a lot of stuff was vague, the videos not enough but the assignment is good and the grading system is average since it leaves you in the middle in the desert and does not tell you where your code breaks like input and expected output to debug with Good course, come to know more about algorithms It was an wonderful experience amazing course.

Read more

highly recommended

Highly recommended!

Highly recommended to everyone.

till now pretty good but the instructor was not able to explain few concepts well.signing off ramiz Highly Recommended.

This is an exceptionally well-made course and highly recommended.

Read more

Careers

An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Programming Coordinator 1 $54k

Programming Acquisitions $61k

CNC Programming $70k

Programming advisor $72k

Network Programming $78k

NC Programming $79k

dynamic CRM Developer $90k

DBA - Programming $103k

DDM - Dynamic Data Masking $111k

Microsoft Dynamic Developer $115k

IT and Programming Specialist $122k

Programming Producer $129k

Write a review

Your opinion matters. Tell us what you think.

Rating 4.5 based on 1,174 ratings
Length 7 weeks
Effort 5 weeks of study, 4-8 hours/week
Starts Jun 26 (44 weeks ago)
Cost $79
From University of California San Diego, National Research University Higher School of Economics, HSE University via Coursera
Instructors Alexander S. Kulikov, Daniel M Kane, Pavel Pevzner, Neil Rhodes, Michael Levin
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Algorithms Software Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now