When I did an internship (which lasted 6 months), I spent the first while (depends on how quick you get it, I guess, I spent two weeks, others more or less) in "training" where the company guided me through their standards and code and whatnot and then after that I worked on their actual products for the remainder of the time. To start off, I was pair programming with people who had already been working on the projects, which helped me familiarise myself with the code, but later I was working on modules on my own.
I'm working in this company full time now and when I started back, I skipped the training period completely and dived straight in with some simple tasks (fix code where unit tests were failing, etc) to refamiliarise myself with the code. Within the first week, I was working on proper tasks. My point is that you need some sort of simple, non critical tasks to get the person started. How many depend on the persons skills. For a completely new person, pair programming is useful too. Once they are able to find their way around the code, they're good to go.
Note that, in my experience, most students (certainly the ones who dont code in their spare time as a hobby anyway) are pretty bad programmers, so you may want to restrict the overall impact they can have on a project.
This was good for me, as an intern, since I got actual experience working in a real team on a real product. The company liked it because they get to offload some of the required, but not critical work from their main developers. Since I came back, I can appreciate this as it lets me focus more on my area and not worry about having to write things like utility code, test frontends or whatever.