What is the distribution of performance in academic programming subjects? On Programmers SE there is a popular question about scientific evidence for whether some people either are or are not able to program. 

One person cites an unpublished manuscript by Dehnadi and Bornat (2006) who state in an abstract:


  All teachers of programming find that their results display a 'double
  hump'. It is as if there are two populations: those who can, and those
  who cannot, each with its own independent bell curve. 


That said, educators have choice in how individual assessments are scored, how assessments are combined, and whether and how any final scores are scaled. These could all influence the shape of the final grade distribution.

I also imagine that to get a double hump would suggest that the variables that best predict student performance (e.g., time spent on subject, general ability, subject-specific ability) would have to either show a double hump or show a discontinuous relationship with performance. In particular, I can see that students that drop out of a subject without formally un-enrolling are likely to fail very badly and appear in a separate hump. I also suspect that certain types of subjects where answers are clearly correct or incorrect and where intuition from everyday life is less directly relevant may also give rise to a process where it appears as if people can either do the subject or they can't.

Questions


What is the distribution of grades in university subjects?
To what extent does the distribution of grades in programming subjects differ from non-programming subjects? Is it bimodal?
Is there any theories or empirical evidence about what leads to bimodal grade distributions?


References


Dehnadi, S. &amp; Bornat, R. (2006). The camel has two humps (working title). Middlesex University, UK. PDF and summary page.
Our university has a public grade distribution database, so I did a really quick analysis on some historical data to see if there was any support for this idea. To my surprise, it appears that there might be. But, my analysis is very limited.

I downloaded the grade distributions for all intro psychology and intro computer science classes from 2010-2014. This gave me the grades of about 15,000 psychology students and about 1,500 computer science students. I summed up the count for each letter grade, and then normalized to a percentage of students. Apologies for the somewhat ugly chart, but here's what I found:



The distribution for letter grades seems pretty consistent across both disciplines, but what jumps out to me is the assignment of "W" grades, which is the grade received when a student withdraws from the course after being enrolled for at least the first week of classes. About 20% of all intro CS students withdraw from the class, while less than 5% of intro psych students do. This might indicate that a larger number of CS students find the course to be too challenging for them, and withdraw rather than get a low grade.