My most recent ventures have been centered around improving my problem solving skills. I have been perusing Algorithms for the past two months, revising the concepts that I learned a while back in my sophomore year in college. I’m quickly realizing that the amount of depth in the field of algorithms is staggering. Doing a Depth-first traversal through the infinite graph that represents all knowledge of algorithms suffers from the drawback of DFS - not being complete when the subtree is infinitely deep.
Here’s my plan for wrapping up my learning:
So far, I have covered chapters 1 through 3 of Algorithms. I plan to finish up chapter 4 (Graphs), and to spend a few days brushing up on Dynamic Programming, from The Algorithm Design Manual by Steven Skiena. After skimming Skiena’s text, it seems to provide more exposure to Dynamic Programming and to more math-heavy topics, which I definitely would like to explore later.
I highly recommend Algorithms, by Robert Sedgewick, as a starting point for people who are learning/revising foundational concepts, especially because there are implementations of all the major data structures and algorithms in Java throughout the book. For those who prefer a more comprehensive approach to learning algorithms, I’d recommend Introduction to Algorithms, informally known as “CLRS”. Some may prefer this book as it is language-agnostic, and because the pseudocode is clean enough to translate a language of one’s choice. People have different learning styles, so it’s ultimately up to you to decide which of the three books is best for you to use.