It's the best to keep a special separate server host. It could be one of the computers, including the teacher's computer, but then it cannot be turned off. Just remember that there is no such thing as miracle.
That host needs to execute some network service application supporting storage, student's data, class data (assignments, reviews, marks, schedules, etc), authentication and actions, such as work submission, assignment submission, message exchange, and so on.
(There are also peer-to-peer technologies, but they are way more complex then client-server.)
See also:
http://en.wikipedia.org/wiki/Client%E2%80%93server_model[
^].
Ideally, it would be even better to go beyond client-server and implement
push technology. As you are not confined to use very limiting HTTP (especially for LAN), you can easily implement server push from first principles. Please see my past answers:
Application 'dashboard' for website accounts[
^],
How Do I Get To Know If A A Tcp Connection Is Over[
^],
an amateur question in socket programming[
^],
Multple clients from same port Number[
^].
You could implement very robust yet simple
publisher-subscriber model. This way, none of the host would be in need to poll the server periodically, which is a very bad thing (see the links above).
Now, networking itself. It can be done on one of several different levels of networking, remoting or WCF.
Please see my overview of these approaches in my past solutions:
how i can send byte[] to other pc[
^],
Communication b/w two Windows applications on LAN.[
^].
Client system can be regular Windows application (Forms, WPF, anything), but the most adequate form of the service application is the
Windows Service. Please see my past answers:
Configure Windows Service with UI[
^],
Windows services Error[
^],
http://msdn.microsoft.com/en-us/library/zt39148a.aspx[
^],
How to install windows service programmatically[
^].
—SA