Hi Hamilton,
Additionally to prescribe students with a specifically configured workspace, you may create a 'Factory' for them (See:
https://www.eclipse.org/che/docs/factories-getting-started.html). A factory provides you a link that, when followed, will create a new clone of the workspace the factory is based on (including commands, projects/code, env vars, configuration, tooling, etc.) under the user's account.
With the above in mind, you should be able to get a Che server up where users can login and create custom pre-configured workspaces based on assigned Factories.
For your authentication requirements. Che Multiuser uses Keycloak (https://www.keycloak.org/) for authentication and while I haven't used this myself, I do know that Keycloak has some support for bringing your own authentication so I am optimistic that you will be able to find what you need on this front.
Now to address your hardware restrictions: Che can be configured to put certain restrictions on how much RAM each user can use/ how many workspaces they can run, etc. (See config options here:
https://github.com/eclipse/che/blob/master/dockerfiles/init/manifests/che.env#L613). Additionally, Che provides some control over permissions so perhaps you would be able to limit users from making new workspaces other than the ones assigned to them, and then limit their ability to scale up their own workspaces, etc.
(To see some of the permissions supported, see: https://www.eclipse.org/che/docs/permissions.html). As well as this, you should be able to configure the amount of RAM each workspace runs on down to 0.5GB (this is included in the workspace definition).
However, in terms of a queue, I do not think Che would provide that out of box (since it blurs the line between user workspaces which Che tries to draw). This is beyond my experience, but there may be a way you can build a separate service that can take source and return back compiled executables and then configure commands (
https://www.eclipse.org/che/docs/commands-ide-macro.html) to trigger a call to this external service.
I would like to add that using Che education is a use case that I believe is very well suited to what Che provides. With Che, you should be able to create dev environments once and share them for many students to quickly and seamlessly reproduce so they can focus on their course content. It's great to see work being done on this!
Let me know if any of this is unclear/ if you have any more questions after reading this.
Best,
Zak
_______________________________________________