cancel
Showing results for 
Search instead for 
Did you mean: 
zelenak615
Community Member

Enrolling Students in Multiple Courses

Jump to solution

Hi,

We have one large training program that we have designed as a series of 5 separate courses. We are realizing it will be quite a headache to manually enroll each user into 5 separate courses, especially since people are enrolling at different times and going through at different paces. Is there a way to enroll a user for multiple courses at once? Or an auto-enroll option where any student enrolled in one course is automatically enrolled in the others? Any suggestions on managing this are appreciated!

1 Solution

Accepted Solutions
James
Navigator II

 @zelenak615 

Yes, you can certainly enroll users in more than one course at a time. However, if you enroll them in more than one course at a time, then the users will be able to go in and out of any of the courses courses at any time.

There is no built-in mechanism for a self-paced progression of courses.

That said, there are a few things that come to mind. In these, I probably will use the word student and user interchangeably. Even if someone is a teacher somewhere else, they should probably be a student in a training course.

If the courses are simple enough, you could make the modules within the same course and then use prerequisites to make sure they've completed one before starting the next. I'm going to pretend you've already thought of that and decided against it, but I wanted to mention it for completeness in case someone is coming along later and reading this and hadn't thought of it yet.

If the courses ran on a fixed schedule, you could set the dates. You could have the course with multiple sections and enroll them in the same section for all five courses. The first course could, for example (I don't know how long they take), run during July. Then there would be a section in the second course than ran in August while a second section in the first course was in session during August. In most cases, this is not really a solution as it is not self-paced and getting behind in the second months throws everything off since you're now in the third course come September, even though you haven't competed the August training.

We've now ruled out built-in options, so lets look at some ways to handle it externally.

If there results of the completion of the course are stored in an external system (like a grade in a typical course would be stored in a Student Information System), then the data stored in that system could be used to generate SIS imports. It would only load them into the course that they were ready for and wait until course 1 was completed before adding them to course 2. This would likely require human interaction to mark the course as being done, but automation may be available.

If the results of the completion of the course are not stored in an external system and are only available in Canvas, then things get a little tougher. We have a mandatory student orientation that students must complete before they get into their real course. The results of the orientation completion are not stored in our SIS, but we wrote our own local database to house the results. Since your training is sequential and involves only those five courses, that might not even be necessary. Completion of our orientation is indicated by scoring a certain amount on a final quiz. We have a process that runs every 20 minutes and uses the API to look for students who have completed that quiz. It then removes them from that course and moves them into their regular courses. We also move them into a version of the training course that has the content without the quizzes so that they can go back and review the material at a later date. It is easier to maintain if students are removed once they have completed the course, especially in your case so that you don't have to keep processing students who have already moved on. That process could be tweaked to look for completion of course 1 and move those students into course 2, check the completion of course 2 and move those students into course 3, and so on.

There is another way that our students can indicate that they have completed the orientation. We have an LTI that writes the entry to the database. It comes after the students taken the final quiz and the final quiz is a prerequisite for that LTI. Although our LTI doesn't do it, it could be set up to remove the student from the current course and add them to the next course in the sequence. This has the benefit of being on-demand and letting the user move on immediate rather than waiting a day or two for human interaction or for up to 20 minutes for the process to run. The downside was that students would be kicked out of the course they were still in and probably get an error message and that we are using SIS imports and didn't know what impact writing their enrollment information through the API would have on later SIS imports (and didn't want to test it at the time).

There is another possibility that wasn't around when we started all this. It's call Canvas Live Events. Canvas writes information to a queue on Amazon Web Services whenever certain things happen. You can then read that queue to see if anyone has completed the course. There's a note that says this is a best attempt to write that information and in the case of congestion, it may not happen. For that reason, I'd still want to query the final quiz or make the students use the LTI to indicate completion.

View solution in original post

2 Replies
James
Navigator II

 @zelenak615 

Yes, you can certainly enroll users in more than one course at a time. However, if you enroll them in more than one course at a time, then the users will be able to go in and out of any of the courses courses at any time.

There is no built-in mechanism for a self-paced progression of courses.

That said, there are a few things that come to mind. In these, I probably will use the word student and user interchangeably. Even if someone is a teacher somewhere else, they should probably be a student in a training course.

If the courses are simple enough, you could make the modules within the same course and then use prerequisites to make sure they've completed one before starting the next. I'm going to pretend you've already thought of that and decided against it, but I wanted to mention it for completeness in case someone is coming along later and reading this and hadn't thought of it yet.

If the courses ran on a fixed schedule, you could set the dates. You could have the course with multiple sections and enroll them in the same section for all five courses. The first course could, for example (I don't know how long they take), run during July. Then there would be a section in the second course than ran in August while a second section in the first course was in session during August. In most cases, this is not really a solution as it is not self-paced and getting behind in the second months throws everything off since you're now in the third course come September, even though you haven't competed the August training.

We've now ruled out built-in options, so lets look at some ways to handle it externally.

If there results of the completion of the course are stored in an external system (like a grade in a typical course would be stored in a Student Information System), then the data stored in that system could be used to generate SIS imports. It would only load them into the course that they were ready for and wait until course 1 was completed before adding them to course 2. This would likely require human interaction to mark the course as being done, but automation may be available.

If the results of the completion of the course are not stored in an external system and are only available in Canvas, then things get a little tougher. We have a mandatory student orientation that students must complete before they get into their real course. The results of the orientation completion are not stored in our SIS, but we wrote our own local database to house the results. Since your training is sequential and involves only those five courses, that might not even be necessary. Completion of our orientation is indicated by scoring a certain amount on a final quiz. We have a process that runs every 20 minutes and uses the API to look for students who have completed that quiz. It then removes them from that course and moves them into their regular courses. We also move them into a version of the training course that has the content without the quizzes so that they can go back and review the material at a later date. It is easier to maintain if students are removed once they have completed the course, especially in your case so that you don't have to keep processing students who have already moved on. That process could be tweaked to look for completion of course 1 and move those students into course 2, check the completion of course 2 and move those students into course 3, and so on.

There is another way that our students can indicate that they have completed the orientation. We have an LTI that writes the entry to the database. It comes after the students taken the final quiz and the final quiz is a prerequisite for that LTI. Although our LTI doesn't do it, it could be set up to remove the student from the current course and add them to the next course in the sequence. This has the benefit of being on-demand and letting the user move on immediate rather than waiting a day or two for human interaction or for up to 20 minutes for the process to run. The downside was that students would be kicked out of the course they were still in and probably get an error message and that we are using SIS imports and didn't know what impact writing their enrollment information through the API would have on later SIS imports (and didn't want to test it at the time).

There is another possibility that wasn't around when we started all this. It's call Canvas Live Events. Canvas writes information to a queue on Amazon Web Services whenever certain things happen. You can then read that queue to see if anyone has completed the course. There's a note that says this is a best attempt to write that information and in the case of congestion, it may not happen. For that reason, I'd still want to query the final quiz or make the students use the LTI to indicate completion.

View solution in original post

zelenak615
Community Member

Thank you so much, James! We may have to combine the courses as modules within one (very large) course. Initially, we thought we thought we would be making our and our users' lives simpler by separating the courses since they are so large, but, after reviewing the options, that is probably our best solution at the moment.