You probably need to explain to us how the people using the topics and classes are grouped, and what content and activities are shared between classes/groups and what kinds of information, resources and activities need to be separated between different classes.
Moodle "groups" feature allows common course to be shared between several different sets of students, but that activities such as discussion forum, wiki etc.
Students see the same course, but belong to different forums, and you can select some activities to be separated by group, and others to be shared.
Unfortunatly the role and permission system does does not provide a mechanism for applying permissions at a group level.
There is also not an straightfoward way that I know about which would allow you to hide and show resources to different groups selectively. This means that if classes begin at different times of years then you cannot gradually reveal the resources if they are in a single course.
Also the course stucture does not provide a mechnism to allow different permissions to be applied to different topic sections.
If groups do not seem a good match, perhaps you could look at the metacourse feature which would allow you to create metacourses with shared resources accessible by students in several different subcourses. Alternatively look at the backup / restore feature which could allow you to create complete copies of the course for each class. Separate courses do have an administrative overhead - updates to one course mean rememebering to copy the changes over to the other courses.