In algorithms, we learn various problem-solving techniques namely Dynamic Programming, Greedy Algorithms, Divide and Conquer and more. Why am I studying this is a computer science course? I think these are general problem solving techniques, not just related to computer science, right? Basically in all the problems, we try to solve the simpler problems and then combine to find the unknown. This is the basic idea behind all the techniques.