Basics
1. Syntax (learn the way the language looks and feels)
2. Frequency (learn the most frequently used keywords and functions such as + - * /)
3. Complexity (learn the simplist concepts first such as loops, switch statements, conditionals, assignment)
4. Practice with a machine (theory and practice go hand-in-hand)
5. Discuss with fellow programmers (in order to improve, be content to be thought foolish and stupid)
6. Summarize (how does this new knowledge tie in with the existing knowledge in my mind?)
Advanced
1. Patterns ( learn the way objects, patterns, commonly used formats look and feel in the code)
2. Frequency (learn less frequently used but still important concepts that are prevalent such as objects, templates, memory management, data structs etc)
3. Complexity (learn the more complex concepts such as patterns, architechture design)
4. Practice with a machine, maybe serveral machines (theory and practice go hand-in-hand)
5. Discuss with fellow programmers (in order to improve, be content to be thought foolish and stupid)
6. Summarize (how does this new knowledge tie in with the existing system in place?)