Best way to create a specialized group

By Dan

I'm interested in creating groups for student classrooms. Each classroom will have one or more teachers. The types of activities I'd like to support would be: classroom creation/moderation, announcements by the teacher to the class, inclusion/exclusion of users in the class, setting permissions on whether students can post information, visibility of information, etc.

Can anyone advise me on the best way to go about implementing this? Are there any plugins that can support this kind of functionality already?