I think (in the nicest way) that you don't fully understand roles.
A user isn't assigned a role - they are assigned a role *somewhere*. This is a really important distinction.
Example...
- 'User A' is assigned the role 'teacher' in 'Course 1'
- 'User A' (the same user) is assigned the role 'student' in 'Course 2'
- 'User B' is assigned the Manager role for the site.
What you don't want to do is to assign site-wide 'course' roles (teacher, student etc) as that won't work properly.