World's most popular travel blog for travel bloggers.

[Solved]: How To Best Learn About Algorithms In Depth

, , No Comments
Problem Detail: 

I have been reading this site with a great deal of interest, but I find a lot of it goes over my head. This has made me wish to learn a lot more about algorithms and CS in general. As far as I can tell from my research, there are 2 main ways of doing this.

  1. I can by a nice thick heavy book and work my way through it slowly but surely.

  2. I can "learn by doing" and by a nice book, but instead of reading it cover to cover, move to parts that interest me and work on implementing and applying algorithms I like.

  3. ?

My question is, which of the above did the you use and would you recommend the same approach to someone else?

Asked By : jozefg

Answered By : Dave Clarke

I learned about algorithms in a university course years ago. But if you are to do algorithms using a book, then you need a good one. Two books stand out for me as the way to get into algorithms:

  • The Algorithm Design Manual by Steven S. Skiena
  • Introduction to Algorithms by T Cormen, C Leiserson, R Rivest and C Stein

The first is perhaps more of a hands-on manual, whereas the latter is more like the bible, but with proof.

The strategy you could follow would consist of reading, doing the theoretical exercises, and then implementing as much as you can, focusing on algorithms/problems you find interesting or challenging or both. Thus, try to cover all aspects of algorithms, not just implementing them. This will include studying their time and space complexity and proving their correctness. The study of algorithms is more than just implementing algorithms.

After you've gained enough experience, start specializing. If you become interested in Computational Geometry or non-blocking algorithms, for example, then start exploring books and research papers in this area.

Specialization is good, but it is also good to sample techniques from other areas, so reading broadly about algorithms (and implementing such algorithms) is a good way of maintaining a broad skill set.

EDIT: After going through the introductory algorithms, you may consult books like Randomized Algorithms by Motwani & Raghavan or Approximation Algorithms by Vazirani. These books are a survey (and to some extent, a good learning exercise in mathematical techniques) in more advanced algorithm design techniques. They also broaden your insight into many other fields in CS like Graphs and Networks, Data Structure design and Optimization.

Best Answer from StackOverflow

Question Source : http://cs.stackexchange.com/questions/818

0 comments:

Post a Comment

Let us know your responses and feedback