Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resource for learning Algorithms for non-CS/Math degrees [closed]

Tags:

algorithm

I've been asked to recommend a resource (on-line, book or tutorial) to learn Algorithms (in the sense of of the MIT Intro to Algorithms) for non-CS or Math majors. Obviously the MIT book is way too involved and some of the lighter treatments (like OReilly's Algorithms in a Nutshell) still seem as if you would need to have some background in algorithmic analysis. Is there resource that presents the material in a way that developers who do not have a background in theoretical computer science will find useful?

like image 388
ennuikiller Avatar asked Oct 13 '10 13:10

ennuikiller


People also ask

What math is needed for algorithms?

A version of what is normally called discrete mathematics, combined with first-year (university) level calculus are the primary requirements to understanding many (basic) algorithms and their analysis.

Where can I learn algorithms?

Readers can learn how to write and use algorithms through traditional college programs, online courses, or coding bootcamps. Online courses and bootcamps provide learning opportunities that generally cost less and take less time than a college degree program.

What is the best way to learn algorithms and data structures?

You can learn DSA from various text, video or hybrid types of resources such as: Textbooks on DSA like Introduction to Algorithms by T.H.Cormen, etc. Self Paced Courses on DSA like Data Structures and Algorithms – Self Paced. Live Online Classes on DSA like DSA Live for Working Professionals.


2 Answers

I think the best way to learn algorithms are through the various competition sites.

  • USACO - my personal favorite, as it gives a clear path through the material
  • TopCoder - already mentioned
  • Sphere Online Judge - great if you want to work in another language other than C/C++/Java

As far as books, the best single intro I've seen for the non-math specialist is Data Structures and Algorithms. It takes you through an algorithm line by line and shows you how it decomposes mathematically, something CLRS's otherwise excellent analysis section is a little less clear on.

Skiena's Algorithm Design Manual is also excellent, as is his Programming Challenges, which is essentially a tutorial through the Valladolid Online Judge.

Honestly, though, I think the single most helpful thing a beginner can do is to implement the various algorithms -- merge sort, say, followed by Quicksort -- and time them against variously sized inputs. Create a spreadsheet with a graph that shows their growth over time. Very few non-specialists will have the patience or the know-how to set up a recurrence relation and solve their way through it. But you must understand the effect of, say O n^2 growth over time, and there's no better way to learn this than to watch your own program blow through its memory stack. :)

I say this as a non-CS, non-math programmer who has spent a good couple of months wrapping my mind around algorithmic analysis.

like image 128
rtperson Avatar answered Sep 20 '22 07:09

rtperson


I'd go for the Algorithm Design Manual, by Steven Skiena. It's very readable and starts with the basics in an easy-to-understand way. For example, it explains big-O notation very well. The emphasis is on practical application, which is a big bonus for beginners coming from a non-theoretical field.

The second half of the book is a reference of common algorithm problems and practical approaches to their solutions. I found it invaluable as a learning aid, and now as a reference.

like image 27
ire_and_curses Avatar answered Sep 23 '22 07:09

ire_and_curses