I recall reading about a professor at uni which carefully designed his tests throughout the year so he could determine if a student had grasped a certain programming topic. He also tracked effort, through handins and such.
After collecting data for a few semesters he concluded his students could be clearly divided into three categories: those who just "got" programming, those who understood it after working hard, and a small group that just didn't grasp regardless of effort.
After collecting data for a few semesters he concluded his students could be clearly divided into three categories: those who just "got" programming, those who understood it after working hard, and a small group that just didn't grasp regardless of effort.