We need a better registration system for our free computer software classes/workshops at our library. I also want to use it to demonstrate the power of D7, and the value of moving from a home-grown CMS to Drupal. What combination of modules do you find work best for this situation? We do not need to collect money in any way, just:
* allow participants to register and un-register
* post documents and files to download and print (handouts, etc.)
* search by workshop/class title, content (Windows vs Mac, etc.)
* see list of all classes sortable by title, OS, date
* print attendance sheet for participants to sign-in on
* close registrations when full
* offer form for contacting instructors (probably use built-in stuff, right?)
Any advice would be greatly appreciated, thanks!

Comments
Oh, and...
One major choice is
One major choice is http://drupal.org/project/signup though the Drupal 7 port is not completely done.
An upstart module with similar features is http://drupal.org/project/registration
knaddison blog | Morris Animal Foundation
Agreement
I think either signup or registration could be very good to do much of that for you. I haven't used either in D7 yet though.
But really with some signup type module and views and attachments (default core node attachments) you could probably do all of that.
For emails there are lots of options. http://drupal.org/node/645108 describes each pretty well and describes what they are built to do. Make sure you know what you want before you choose one.
The trick is in the permissions to everything and who is doing each thing. User contact forms are available though you might want a more restrictive way to manage then just opening up contact forms for all users.
Tyler Smith
Developer
I second the comment about
I second the comment about most things working with views and your standard Drupal modules. After you make your custom content types and setup a role for your students (so that they will have correct permissions for uploading documents and such), you'll have most of your requirements filled. With a standard Installation Profile not all of the core modules will be turned on (for instance, the contact module)...so make sure you go through some of the core modules and see if they will do what you need done before searching for a contrib module to fit your requirements. Good luck!
Thanks for the ideas
Thanks all for the great ideas. I'm building it into my outline for this project.
A bit late to the party..
Sorry I'm a bit late to chime in, but someone mentioned seeing this post here and I thought I'd check it out-
I would recommend using http://drupal.org/project/registration if you are or have someone who can dive into the code. The entity and entity field query system is powerful, flexible, and pretty quick.
It may be a bit rough on the edges still, but I've been able to make it do exactly what I want with just a bit of effort.