I've done some of this, but not all. Password access control is already part of Swiki, and I've made some enhancements that help log this information. For example, you can browse the Swiki by contributor. I can send you the code if you like. It's pretty simple.
You can have teacher access to pages by setting the page edit password. Do you need more control than that? We had surveys in the Swiki, but they were all HTML things I coded by hand, and the CGIs that responses to the forms were perl and Python scripts I'd written for other purposes. This solution worked for my simple stuff. We were filling out confidential surveys, so this was appropriate - the form would be parsed and then emailed to myself. A better solution would probably be to do form based stuff either in Comanche or as a special Swiki action. I'm afraid I've not done either, sorry. But I'd be interested to see what you've done! -Eric
