There are lots of tests which can distinguish potential good programmers from those who lack that possibility; for example, the LSAT is mostly a test of logical reasoning and would serve ideally for this purpose.<p>The problem for Computer Science departments isn't a lack of available tests; rather, the problem is policies (mostly from governments) which require CS departments to take in as many students as possible, whether qualified or not. In my area (BC, Canada), the government decided six years ago that universities should double the number of computer science degrees they hand out -- at exactly the same time as the number of applicants was dropping sharply due to the dot-com bubble bursting. Unsurprisingly, the requirements for admission to CS programs fell dramatically, and (thanks to the flood of unqualified students) the number of students failing first and second year CS courses went through the roof.<p>We know how to identify good vs. bad students -- the problem is a lack of willpower to do anything with that information.
The title of this submission is a little misleading.<p>Here is the conclusion of the paper: <i>There is a test for programming aptitude, or at least for success in a first programming course. We
have speculated on the reasons for its success, but in truth we don't understand how it works any
more than you do. An enormous space of new problems has opened up before us all.</i>