I need advice!

I might end up administrating a network of PC's in a college not too long from now. There'll be a computer room used by students, and they'll be doing such things as:
* Surfing the web
* Typing up documents
* Printing off documents

If the students are on a break for the Summer or whatever, I might give the network a complete overall. Here's what I have in mind...

I forsee that each student will have their own login along with their own storage on a network drive. For instance, when a PC boots up, there will be a login screen asking for their username and password; the student enters their username and password and then the desktop environment loads. They'll have their own files on the desktop which will have been retrieved from the network drive, and they will have their own "Home" or "My Documents" folder which will have been loaded from the network drive.

Of course, my first choice is to use Linux on all the machines. At the moment I'm way more comfortable using Windows XP because I've been using Windows for about 15 years, but ever since Windows Vista came out I've decided I need to jump ship sooner rather than later. And plus I prefer Unix-like systems.

There will be a server PC that acts as a gateway to the internet, and I think I'll have Squid running on it, both for doing filtering and also for caching web pages. And of course there'll be another server that holds the file shares for all of the students' documents.

Sitting at my server computer, I'd like to be able to install a new piece of software on all of the computers without having to walk around the room with a CD in my hand. I'd pretty much like to be able to set up one computer once, and then have the changes reflected on every computer in the room.

So anyway, I'd like advice on what operating systems and what software to use. On the PC's that the students use, I'm thinking of using Ubuntu. What would be good to use on the server?

Any advice on this is greatly appreciated