I don't buy the "You either get pointers/recursion or you don't." The mind is a clean slate. Anyone can learn anything given enough time and interest. The question is - are these kids interested.
We've been looking for an intern at my work, and I've gone through like 30+ resumes from this year's crop. The main thing that shocks me is how few of them have done a god damn thing that wasn't required from them by one of their classes or a job. Find someone who has done something on their own and enjoyed it, and you will be satisfied.
That said, personally I wouldn't waste the time with someone who didn't understand C and assembly. There is a big difference between debugging a core dump with gdb from a C++ crash, and looking at a Java stack trace. C++ is really a horrible language for many reasons, but that which is good about it is that which it has in common with C. It is a powerful way to tell the computer to do exactly what you want it do, without generally having to worry about what other nonsense is being done by some runtime.
Also if you want to save time, don't bother with anyone not from the top 10 engineer schools. Not to say that there aren't great students from tier 2 schools, but from a practical perspective you don't need your hire to be one of them.
MIT, Stanford, UC Berkeley, Georgia Tech, Illinois Urbana Champaigne, CMU, Caltech, USC, Michigan Ann Arbor, U. Texas Austin.
I also wouldn't hire anyone to write software who uses Microsoft Windows. As a computer science student, you simply couldn't be that interested in software or how computers work without becoming a Linux user (even better if you go with FreeBSD or something else)