I guess the best approach would be creating a different components for student and teacher and attaching them to different pages.
There is also a option to determine in component's methods if the user is a Teacher or a Student, but in my opinion it will complicate the component and whole app too much.
To write such an app as simple as possible, I guess creating views and components for every group is the best approach. Cumulus just determines if a cluster has access to a page, nothing more.
So maybe in future, if you want to create a moderators cluster you just can attach the same modules as Teacher to the moderators cluster so every user in moderators cluster will have the same access as Teacher and more.