Sorry, couldn't resist...
In my view, there are two kind of people:
- The ones who believe you should focus on learning a really hard low level programming language, focusing on how it works first. Then when you know how all the internal details of how the code is run/organized you start learning coding logic and advance algorithms.
- The ones who believe you should focus on learning a really easy programming language and focus on the algorithm logic. After you can intuitively solve problems, you go and learn about how the code is run and organized.
If you take the first approach, learn how to code on C, learn how pointers work, the function call stack is organized, how the returns are stored and how all the data of your computer are just a sequence of 0's and 1's. Once you are done with that, go study dynamic programming, greedy algorithms and algorithm complexity.
If you take the second approach learn how to code on python, then study recursion, basic logic, dynamic programming, greedy algorithms and algorithm complexity. After that you start studying lower level programming.
Personally I took the first approach and I don't really regret it, but I learned to code long time ago and material was way more scarce.
That being said, there is not right or wrong answer. You will have to pick if you want the difficult part first (learn a hard programming language right at the start) and the other programming languages will be easier. Or you want to learn an easy programming language first and go for each new language a little harder than the former. Either way is fine, but in my experience, people who start with an easier language tend to stick to it (which may be 100% OK, depending on your goals).
Edited by KnolanCross, 03 February 2014 - 01:13 PM.