My perspective is a little different - this is very specific to the profession I have spent most of my career in which was in coding and that too only in product companies. I feel industry experience, internship etc is far down the line in what I expect from a fresher - there are far more basic things missing which need to be fulfilled before I look for practical/industry knowledge or whatever.
When I am interviewing/looking for a programmer who has less than 5 years experience, all I am looking for is that he be able to code - nothing less, nothing more. I don't care what language he can code in, I don't care what OS he is been working on, I don't care whether he knows anything else. I usually start with asking him to write an implementation of strcpy or strcat on the white board in any language of his choice. If he does that quick enough, next a strstr on the white board. Then give him a known sorting problem or a search problem - i.e. say mergesort on the white board. It's not these exact questions but somewhere along these lines. Then finally some problem solving ability - i.e. some problem where he has to design an algorithm for solving a problem - he need not write code for this - just explaining a solution is enough. I am hiring a guy who is going to be coding all the time - so basically he has to write tons of code on the white board in the interview.
Who cares about tools and stuff? How much time would it take a reasonably competent person to learn to use a crappy version control system like CVS or some build system? All this can be learnt on the job.
If it's someone with more than 5 years, then good familiarity with the Gang of Four Patterns is a must.
I spent some amount of time with what was supposed to be one of the better private engineering colleges in Bombay University. I also spent a little time with one person who interacts a lot with DTE Maharashtra and AICTE. This is what I discovered. During the years when I did my graduation (I am not a comp science/electronics/electrical engineer), the govt colleges ruled the roost - they had a major say in syllabus setting, exam setting, setting the tone of the correction and marking. Now the private colleges are large in number and they have a heavy influence in everything. The private colleges are in to make money - if lot of people fail, then it hurts them badly. So everything is designed to make sure that the no of people who don't pass out isn't high. First Year Engineering is common to all branches. It had 2 subjects - C & C++ in Semester 1 & DSA in Java in Semester 2. Apparently these 2 papers resulted in huge amount of failures. So what was the solution? Change the paper format so that you can pass without writing a single program - exam papers have enough theory questions in programming so that someone can pass without writing a single program and someone who cannot code a fizzbuzz(
http://www.codinghorror.com/blog/200...s-program.html) can score high marks. Even the programming questions are repeated from a set of 20 programming questions. So over the semester, the professor teaches some 20 standard programs - these programs are repeated in the assignment, they are asked in the mid term tests - almost everyone knows these programs by heart even if they can't program at all. And 3 or 4 off these 20 programs are asked in the university exams also.
Even after all this, the fail rate of Bombay university in these 2 papers was much more than other subjects. So the next solution. Remove these 2 subjects from first year engineering. Now there is no programming subject in the first semester - and there is subject dealing with some amount C in semester 2. C++ and Java been eliminated. I am perfectly OK with this - i.e. doing one programming subject in the first year is enough & C is perfectly fine - no need to get into C++ and Java. Even python is good enough instead of C. However, I am pretty sure the papers are structured such that you can pass and score high without knowing how to program at all. Another thing is that for all subjects (all years), one of 2 things happen - either a paper is easy or by some chance the paper is a little tough, then all examiners are told to make the correction easy.
In my opinion, since engineering subjects are common for 1st year, colleges should admit students into just engineering in the beginning and after the first year based on how much marks they obtained in the respective subjects, they should be allowed to choose their branch. Another thing is that for programming subjects, there should be zero theory questions or short notes. As a matter of fact, I think there should be no short notes in any subject - 'short notes', I think are the bane of engineering.
So to reiterate, I want colleges to make sure students write 1000s of programs. I don't care about tools, I don't care practical experience or internship. I just want guys who can write basic code.