Many computer science teachers have told me that some students just get computer science — and others do not. We certainly have a lot of evidence that students enter introductory computer science courses with big differences in skills. Some students have already had years of programming experience, while others have never programmed at all. The question is whether those gaps close or diverge further.
Are the differences between students in CS classes explained by experience and background, or are the differences innate? Innate difference among CS students has been dubbed the Geek Gene. Many CS teachers believe a Geek Gene (or something similar) is necessary to succeed in CS, and not everyone has it. A 2007 study found 77% of surveyed CS faculty strongly disagreed with the statement: "Nearly everyone is capable of succeeding in computer science if they work at it." CS teachers point to a bimodal distribution of grades in their CS classes as evidence for its existence. Some students "get it" and do well, while others do not, which appears as two peaks in a grade distribution. Is it real? Are some students born to be computer scientists, and are others unlikely to succeed because they do not have the right stuff?