0
$\begingroup$

Background:

I've a degree in computer engineering that I completed 5 years ago. I got really good grades at algorithms class but forgot everything that I studied. My notes were lost while migrating to a different place.

Now, I want to relearn it. I have very little memory of how I learnt it at that time.

Resources

How To Best Learn About Algorithms In Depth

I've Cormen, Skiena books in pdf format and I've purchased "Design and Analysis of Algorithms" by S. Sridhar by Oxford Publications (I am from Nepal).

I've purchased couple of udemy courses(by Edufulness Atchyut and Himayatullah Sharief)

I've purchased Data Structures books by Lipschultz.

I go to google, type "filetype:pdf "algorithm i want to learn"" and read the slides. I also go to books.google.com and search for books that contains the contents "quicksort algorithm" and read them.

My learning objectives

  • Be able to dry run the algorithm.

  • Be able to calculate the time complexity.

I am surprised that I am not even able to dry run algorithms. I started with searching and sorting algorithms. It was a breeze to learn binary search, linear search type of algorithms. But as soon as I came towards "merge sort" , "quick sort", I am feeling very tough to understand. I've spent 3 daysX3 hrs on quick sort alone and still I can't do a dry run of the algorithm on my own, neither can I understand the dry run done by someone else.

I feel I am missing some prerequisites to learn algorithms. My plan is not to learn only algorithms but many computer science subjects(like operating system, distributed system, database management systems, computer networks, web security etc).

https://teachyourselfcs.com/

This is the complete roadmap I want to follow.

I know discrete mathematics and can understand them. My problem is not that I am having problem with proofs, I don't care about proofs. I just want to dry run the algorithm and call it a day.

Edit: I've watched numerous videos like these

https://www.youtube.com/watch?v=MZaf_9IZCrc

But they're not helping me.

$\endgroup$
4
  • $\begingroup$ Cliche, but "Introduction to Algorithms" by Cormen Et al. is basically the only book you'll ever need. It has everything from the basic to complex algorithms and provides you with all other prerequisite information one may need (discrete maths, notation, etc.). $\endgroup$ Mar 19 at 2:20
  • $\begingroup$ "I don't care about proofs. I just want to dry run the algorithm and call it a day." You need to stop watching YouTube and start solving ten problems on an online judge for each algorithm, write the algorithm on your own, the point is to actually use it even if it is basic, if you don't use it your brain won't think it's important. $\endgroup$ Mar 23 at 9:13
  • $\begingroup$ @KennethKho where could I find problems based on algorithms? I know of leetcode, hackerrank, but I've never found such categorization so far. That'd immediately change my life. $\endgroup$
    – barnyard9
    Mar 23 at 12:29
  • 1
    $\begingroup$ If you have used leetcode, this would be the only one you need for the near term seanprashad.com/leetcode-patterns $\endgroup$ Mar 23 at 17:52

1 Answer 1

1
$\begingroup$

A good text (even available for free) is Jeff Erickson's "Algorithms". No, there is no solution manual.

Algorithms is a required subject in the ACM/IEEE recommendations, you'll find lots of class notes, homework problems, exams by looking around on the 'net.

Some areas that often are relegated to "graduate studies" are approximation algorithms (many problems have no reasonable algorithmic solutions, design an algorithm that gives an approximate solution, hopefully with performance guarantees) and average case analysis (a problem is classified as "hard" if there are cases that are hard, perhaps the typical case/cases met in practice/average are much easier). This is very relevant, but even harder than just complexity. Another area to look at is randomized algorithms, for some hard problems surprisingly simple algorithms which select alternatives at random give good average performance.

Note there are two main approaches: What I call the encyclopaedia approach (give a huge list of algorithms for a slew of problems) and the design/analysis approach (analyse a few algorithms in depth, emphasizing a range of design techniques and how to derive performance measures). Both have their place, check any texts you find, see if they agree with your personal learning style.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.