Difficult to answer without more information on what you already know, what you already tried, and what level of proficiency you have as a goal.<p>I took a course in this book, <i>Introduction to Algorithms</i> (<a href="http://en.wikipedia.org/wiki/Introduction_to_Algorithms" rel="nofollow">http://en.wikipedia.org/wiki/Introduction_to_Algorithms</a>), and it has provided a good foundation for my career. There is MIT Open Courseware and video lecture available for it, which you can get in the previous Wikipedia link or via iTunes U (<a href="http://itunes.apple.com/us/course/introduction-to-algorithms/id495066198" rel="nofollow">http://itunes.apple.com/us/course/introduction-to-algorithms...</a>). This book says "You should have some programming experience... [with] recursive procedures and simple data structures... You should have some facility with proofs by mathematical induction... and elementary calculus." So you may need to look into some discrete math and calculus first.<p>This list of free resources pops up here a lot: <a href="http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books" rel="nofollow">http://stackoverflow.com/questions/194812/list-of-freely-ava...</a><p>There are several algorithms/data structures books in the "Language Agnostic" section.<p>Good luck.