“…We also have to identify the features of expert programmers in order to find the most optimal learning path that will be used to teach the novice programmers the strategies and knowledge experts have. Gomes and Mendes [10] specify the reasons why programming is so difficult to teach/learn: (1) it demands a high abstraction level, (2) it needs a good level of both knowledge and practical problem solving techniques, (3) requires a very practical and intensive study, which is quite different from what is required in many other courses (more based in theoretical knowledge, implying extensive reading and some memorization), (4) usually teaching cannot be individualized, due to common classes size, (5) it is mostly dynamic, but usually thought using static materials, (6) teachers' methodologies many times don't take into consideration the student's learning styles. Different students have different learning styles and can have several preferences in the way they learn, (7) Programming languages have a very complex syntax with characteristics defined for professional use and not with pedagogical motivations.…”