What are Algorithms, their types, and how to learn them?