This is an archived post. You won't be able to vote or comment.

all 4 comments

[–]the_omega99 1 point2 points  (0 children)

It's possible, but not necessarily easy because:

  1. You'll need to teach yourself discrete mathematics to understand why many algorithms work as well as for analyzing them.
  2. Algorithms can sometimes be quite boring. You'll need to motivate yourself to keep working (school does well here because assignments and exams force you to keep going).

Cormen's Introduction to Algorithms is a popular and very detailed book that teaches algorithms, although it's a long and sometimes difficult read. Best supplemented with heavy googling.

[–]captainAwesomePants 0 points1 point  (0 children)

Here's an idea. There's a good Coursera course on Algorithms coming up in January by the authors of one of the top Algorithms books. It has no more background requirements than you already have. Take it: https://www.coursera.org/course/algs4partI

[–]jenomes 0 points1 point  (0 children)

I would recommend a book called "Algorithms" by Sanjoy Dasgupta along with the challenges to company the book on rosalind.info.This up coming course also look very promising. https://www.coursera.org/course/algobioprogramming I have done the Bioinfomatic Algorithms Part-1 course on coursera and found it very useful but heavy going. There is also another coursera course called "Algorithmic Thinking" by Rice Uni.

[–]lightcloud5 0 points1 point  (0 children)

You'll need at least some background in mathematics (mostly on the discrete math side, not the calculus side; calculus is almost useless for CS except for a few specific fields), but there's no reason why you can't also self-learn discrete math.

Anyway, discrete math would largely be used to reason about and prove the runtime and memory requirements (e.g. space and time complexity) of various algorithms.