We have a small team in our department and typically employ 1-3 students/interns. The problem we have is retention. We like to hire a student that will stick around as part of the team for more than just a summer quarter. The problem is though the last 4 students we hired, up front we discussed this with them and they all ended up leaving earlier than we would have liked.
The relationships all ended in a good fashion, the students either obtained teaching assistant or research positions within the university, or went on to bigger and better things. This is all understandable and we do not hold it against them for doing what is best for them.
But my perspective is different as I worked within our department for 2 years during undergraduate at which point I was brought on full time upon graduation.
How can we retain students? We give them hardware they need/want, we provide them with problems to solve in anyway they see fit (within reason). All in all to me this type of job for a student programmer is so flexible and awesome I cannot see how anyone would want to leave.