3 ms·
One technique that's worked for me is to first come up with questions in areas I'm interested in. Questions like "how does google maps implement route finding"
by lovelearning 12y ago
One technique that's worked for me is to first come up with questions in areas I'm interested in.
Questions like "how does google maps implement route finding", "how does a database implement its index", "how do I process images quickly on my multicore machine", etc.
These are my problems, so there is a lot of satisfaction waiting at the end when they're solved by myself. I find them much more motivating than abstract or contrived examples of the kind found in books or online judges.
So I come up with these questions. Then think about how to solve them naively, using pen and paper. This may take days or even weeks. Then I start improving the solution incrementally. I don't allow myself to be intimidated by any math involved. Though I'm not great at math, I have developed a belief that all it takes to become good at math is to persist in solving the problem no matter how much time it takes.
Invariably, this technique ends up resembling one or the other algorithm out there, but now I have developed intuitive understanding of it because I arrived at it myself instead of reading
In the process, I also get exposed to new concepts in math and computer science. I write detailed notes on these concepts too. Exploring these concepts leads to exposure to even more concepts and their algorithms. So it becomes an ever expanding spiral of knowledge and practice.
By this process, I've become extremely comfortable with algorithms like path finding and data structures like trees.
2 books that have helped me mainly because they are written in simple language and make the topics seem approachable : 1) Polya's "How to solve it" which is math oriented 2) Dromey's "How to solve it by computer" which is programming oriented and inspired by Polya's book.