Development:Course completion: Difference between revisions
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
We need a way to flag when a user has finished a course. :-) | We need a way to flag when a user has finished a course. :-) | ||
== | ==Settings== | ||
* At the site level, "Enable course completion" should be an option in the Site Administration block's Advanced features / optional subsystems settings page. | |||
== | * At the course level, "Enable course completion" should be an option in the course settings page. When enabled, the additional settings appear below as follows: | ||
[[Image:Completion.png]] | |||
==Criteria== | |||
Several criteria can determine if a course is completed for a user. Criteria can be used in combination, and all criteria (except unenrolment) can be required. | |||
===Manual self-completion=== | |||
Interface: A single selection drop-down list with "yes" or "no" options. | |||
Result: If set to "yes", a student can manually indicate that the course is complete. | |||
===Manual completion by=== | |||
Interface: A multiple selection drop-down list provides a list of all system roles. | |||
Result: If roles are selected, users assigned to each selected role in the course can manually indicate (via a course completion interface) that a student has completed the course. | |||
===Activities completed=== | |||
Interface: A single selection drop-down list with "yes" or "no" options. | |||
Result: A student has completed the course when all activities in the course are completed (see [[Development:Conditional_activities]]). | |||
===Passing grade=== | |||
Interface: A single selection drop-down list with "yes" or "no" options. | |||
Result: If set to "yes", a student has completed the course when his/her total course grade is above the course's "Grade to pass" setting found in the Grader report's edit page for the top level category for the course. [question: Perhaps this "Grade to pass" value should also appear in the course's main setting page to allow for easier cross-reference of the passing grade?] | |||
===Date=== | ===Date=== | ||
Interface: Three single selection drop-down lists with "day", "month", and "year" options. A disable check-box determines if the date criteria is used. | |||
Result: All students enroled in the course complete the course after a specified date. | |||
===Unenrolment=== | ===Unenrolment=== | ||
Interface: A single selection drop-down list with "yes" or "no" options. | |||
Result: A student has completed the course when s/he is unenrolled from the course. | |||
==Notifications== | |||
Interface: A single selection drop-down list with "enabled" or "disabled" options. Also, a multiple selection drop-down list provides a list of all system roles. | |||
Result: If enabled, a student receives notification when s/he has met the completion criteria for the course. If other roles are selected, users assigned to each selected role in the course receives notification when the course completion criteria is met for a student in the course. | |||
==Locking completion settings== | |||
When the first student has completed the course, the course completion criteria settings will be locked. The course settings can be unlocked (via an "Unlock course completion options" button), however a warning message will be displayed stating that unlocking the settings requires deleting all prior course completion data for the course. Once the completion data is deleted, the settings become unlocked (i.e., un-greyed out). | |||
This is consistent with activity completion in 2.0, in which activity completion settings are locked when a user first completes an activity. Activity completion settings can be unlocked after all completion activity is deleted. | |||
If activity completion is enabled and activity completion is a criteria for course completion, then all activity completion settings will be locked once a student has completed the course. In this case, unlocking an activity's completion settings will require deleting both the activity's completion data and the course's completion data. | |||
==Completion progress report== | |||
The idea here is to add the course completion data with the activity completion data already in the "Completion progress report" (found via on "Reports" link in the course Admin block) and clicking on "Completion progress report". | |||
The report will display a table of: | |||
* All users in the course | |||
** The list of users will be sortable, searchable, and filterable (by group, groupings, and/or user profile fields). | |||
** User profile fields (standard and custom) can be added/removed as columns in the list. | |||
* All criteria enabled for completion (e.g., "Manual self completion", "Manual completion by", etc) | |||
* Each user's status for completion of each criteria, indicated by a status icon | |||
* When rolling over the each icon, additional details (including the completion date) will display. | |||
Below is an example with all course completion criteria appearing (ie, all criteria has been enabled): | |||
[[Image:Completion_report.png]] | |||
Display rules for separate groups will apply. If separate groups is enabled for the course, a "teacher" will only see students and completion data for users in the group(s) that she/he is assigned to. | |||
Options for exporting completion data to CSV, ODF or Excel will be available. Completion dates will be included in the export. | |||
A column labeled "Mark complete" will appear containing a checkbox for each student if the user viewing the report is assigned to a role that is allowed to manually indicate that the students have completed the course. | |||
=== | ==Completion in the gradebook== | ||
If course completion is enabled for the course, "Completion status" will also appear as a column in the grader report. If the user viewing the grader report is assigned to a role that is allowed to manually indicate that students have completed the course, a "Mark complete" column will appear to the right of the "Course total" column with a checkbox for each student who has not yet completed the course. | |||
Course completion data can also be included in the gradebook exports. Field options will include: | |||
* Completion status (e.g., "Complete", "Not complete") | |||
* Completion date | |||
* Completion criteria met (e.g., "[Role name] approved, [User name]", "passing grade: [passing value/percentage]") | |||
== | ==Completion block== | ||
If completion is enabled for the site and course, a completion block will appear that displays the students completion status (complete / not complete), the completion criteria options for the course, and the status for completion of each criteria (similar to the Completion progress report). | |||
If students are allowed to manually complete a course, the block will provide an "I've completed this course" button. | |||
==Cron== | |||
A cron function will check these conditions and add/remove entries from the course_completion table as necessary. | |||
== | ==Data structures== | ||
===course_completion=== | ===course_completion=== | ||
This table | This new table will be populated with a record when a user has completed a course: | ||
{| | {| border="1" cellpadding="2" cellspacing="0" | ||
!Field | !Field | ||
!Type | !Type | ||
Line 67: | Line 122: | ||
| | | | ||
|The course that has been completed | |The course that has been completed | ||
|- | |||
|'''completionstate''' | |||
|int(10) | |||
| | |||
|The user has completed the course. 0 or no row = not complete, 1 = completed, 2 = completed with grade above passing, 3 = completed with grade below passing | |||
|- | |||
|'''progressstate''' | |||
|int(10) | |||
| | |||
|The user's current course completion progress as a value or percentage. This field is used when displaying student progress if activity completion is a criteria for course completion. | |||
|- | |||
|'''progressmax''' | |||
|int(10) | |||
| | |||
|The maximum progress value. 100 = percentage. This field is also used when displaying student progress if activity completion is a criteria for course completion. | |||
|- | |||
|'''gradepass''' | |||
|float(10,5) | |||
| | |||
|The minimum grade needed to pass the course (if passing grade criteria enabled) | |||
|- | |||
|'''finalgrade ''' | |||
|float(11,0) | |||
|NULL | |||
|The final course grade scored in the course (if passing grade criteria enabled) | |||
|- | |||
|'''usercompleted''' | |||
|int(1) | |||
| | |||
|The user manually self-completed (if manual self-completion criteria enabled) | |||
|- | |||
|'''completedby''' | |||
|int(10) | |||
| | |||
|The course was manually deemed complete for the user by this other user (if manual completion criteria used) | |||
|- | |||
|'''completedroleid''' | |||
|int(10) | |||
| | |||
|The role of the user who manually completed the user (if manual completion criteria used) | |||
|- | |||
|'''datefinish''' | |||
|int(10) | |||
| | |||
|The finish date criteria for course completion (if finish date criteria used) | |||
|- | |||
|'''unenroled''' | |||
|int(10) | |||
| | |||
|The user was unenroled (if unenrolment criteria used) | |||
|- | |||
|'''deleted''' | |||
|int(1) | |||
| | |||
|The course was deleted | |||
|- | |||
|'''timestart''' | |||
|int(10) | |||
| | |||
|The date/time the user enroled in the course | |||
|- | |- | ||
Line 72: | Line 199: | ||
|int(10) | |int(10) | ||
| | | | ||
|The time the user completed the course | |The date/time the user completed the course | ||
|} | |} | ||
: | ===course=== | ||
The course table will require the following new fields: | |||
{| border="1" cellpadding="2" cellspacing="0" | |||
!Field | |||
!Type | |||
!Default | |||
!Info | |||
|- | |||
|'''enablecoursecompletion''' | |||
|int(1) | |||
| | |||
|The course is using course completion | |||
|- | |||
|'''completeself''' | |||
|int(1) | |||
| | |||
|Students can manually complete | |||
|- | |||
|'''completerole''' | |||
|int(10) | |||
| | |||
|Roles can complete -- probably just use capabilities for this | |||
|- | |||
|'''completeactivities''' | |||
|int(1) | |||
| | |||
|Activities must be completed | |||
|- | |||
|'''completegrade''' | |||
|int(1) | |||
| | |||
|Passing grade must be achieved. | |||
|- | |||
|'''completebydate''' | |||
|int(1) | |||
| | |||
|Passing grade must be achieved. | |||
|- | |||
|'''completeunenrol''' | |||
|int(1) | |||
| | |||
|Unenroling completes the course | |||
|- | |||
|'''completenotify''' | |||
|int(1) | |||
| | |||
|Notify users when they've completed a course | |||
|} |
Revision as of 06:53, 22 May 2009
This is a SPECIFICATION for a feature in Moodle 2.0 that is still under development
Overview
We need a way to flag when a user has finished a course. :-)
Settings
- At the site level, "Enable course completion" should be an option in the Site Administration block's Advanced features / optional subsystems settings page.
- At the course level, "Enable course completion" should be an option in the course settings page. When enabled, the additional settings appear below as follows:
Criteria
Several criteria can determine if a course is completed for a user. Criteria can be used in combination, and all criteria (except unenrolment) can be required.
Manual self-completion
Interface: A single selection drop-down list with "yes" or "no" options.
Result: If set to "yes", a student can manually indicate that the course is complete.
Manual completion by
Interface: A multiple selection drop-down list provides a list of all system roles.
Result: If roles are selected, users assigned to each selected role in the course can manually indicate (via a course completion interface) that a student has completed the course.
Activities completed
Interface: A single selection drop-down list with "yes" or "no" options.
Result: A student has completed the course when all activities in the course are completed (see Development:Conditional_activities).
Passing grade
Interface: A single selection drop-down list with "yes" or "no" options.
Result: If set to "yes", a student has completed the course when his/her total course grade is above the course's "Grade to pass" setting found in the Grader report's edit page for the top level category for the course. [question: Perhaps this "Grade to pass" value should also appear in the course's main setting page to allow for easier cross-reference of the passing grade?]
Date
Interface: Three single selection drop-down lists with "day", "month", and "year" options. A disable check-box determines if the date criteria is used.
Result: All students enroled in the course complete the course after a specified date.
Unenrolment
Interface: A single selection drop-down list with "yes" or "no" options.
Result: A student has completed the course when s/he is unenrolled from the course.
Notifications
Interface: A single selection drop-down list with "enabled" or "disabled" options. Also, a multiple selection drop-down list provides a list of all system roles.
Result: If enabled, a student receives notification when s/he has met the completion criteria for the course. If other roles are selected, users assigned to each selected role in the course receives notification when the course completion criteria is met for a student in the course.
Locking completion settings
When the first student has completed the course, the course completion criteria settings will be locked. The course settings can be unlocked (via an "Unlock course completion options" button), however a warning message will be displayed stating that unlocking the settings requires deleting all prior course completion data for the course. Once the completion data is deleted, the settings become unlocked (i.e., un-greyed out).
This is consistent with activity completion in 2.0, in which activity completion settings are locked when a user first completes an activity. Activity completion settings can be unlocked after all completion activity is deleted.
If activity completion is enabled and activity completion is a criteria for course completion, then all activity completion settings will be locked once a student has completed the course. In this case, unlocking an activity's completion settings will require deleting both the activity's completion data and the course's completion data.
Completion progress report
The idea here is to add the course completion data with the activity completion data already in the "Completion progress report" (found via on "Reports" link in the course Admin block) and clicking on "Completion progress report".
The report will display a table of:
- All users in the course
- The list of users will be sortable, searchable, and filterable (by group, groupings, and/or user profile fields).
- User profile fields (standard and custom) can be added/removed as columns in the list.
- All criteria enabled for completion (e.g., "Manual self completion", "Manual completion by", etc)
- Each user's status for completion of each criteria, indicated by a status icon
- When rolling over the each icon, additional details (including the completion date) will display.
Below is an example with all course completion criteria appearing (ie, all criteria has been enabled):
Display rules for separate groups will apply. If separate groups is enabled for the course, a "teacher" will only see students and completion data for users in the group(s) that she/he is assigned to.
Options for exporting completion data to CSV, ODF or Excel will be available. Completion dates will be included in the export.
A column labeled "Mark complete" will appear containing a checkbox for each student if the user viewing the report is assigned to a role that is allowed to manually indicate that the students have completed the course.
Completion in the gradebook
If course completion is enabled for the course, "Completion status" will also appear as a column in the grader report. If the user viewing the grader report is assigned to a role that is allowed to manually indicate that students have completed the course, a "Mark complete" column will appear to the right of the "Course total" column with a checkbox for each student who has not yet completed the course.
Course completion data can also be included in the gradebook exports. Field options will include:
- Completion status (e.g., "Complete", "Not complete")
- Completion date
- Completion criteria met (e.g., "[Role name] approved, [User name]", "passing grade: [passing value/percentage]")
Completion block
If completion is enabled for the site and course, a completion block will appear that displays the students completion status (complete / not complete), the completion criteria options for the course, and the status for completion of each criteria (similar to the Completion progress report).
If students are allowed to manually complete a course, the block will provide an "I've completed this course" button.
Cron
A cron function will check these conditions and add/remove entries from the course_completion table as necessary.
Data structures
course_completion
This new table will be populated with a record when a user has completed a course:
Field | Type | Default | Info |
---|---|---|---|
id | int(10) | Auto incrementing | |
userid | int(10) | The user who has completed the course | |
courseid | int(10) | The course that has been completed | |
completionstate | int(10) | The user has completed the course. 0 or no row = not complete, 1 = completed, 2 = completed with grade above passing, 3 = completed with grade below passing | |
progressstate | int(10) | The user's current course completion progress as a value or percentage. This field is used when displaying student progress if activity completion is a criteria for course completion. | |
progressmax | int(10) | The maximum progress value. 100 = percentage. This field is also used when displaying student progress if activity completion is a criteria for course completion. | |
gradepass | float(10,5) | The minimum grade needed to pass the course (if passing grade criteria enabled) | |
finalgrade | float(11,0) | NULL | The final course grade scored in the course (if passing grade criteria enabled) |
usercompleted | int(1) | The user manually self-completed (if manual self-completion criteria enabled) | |
completedby | int(10) | The course was manually deemed complete for the user by this other user (if manual completion criteria used) | |
completedroleid | int(10) | The role of the user who manually completed the user (if manual completion criteria used) | |
datefinish | int(10) | The finish date criteria for course completion (if finish date criteria used) | |
unenroled | int(10) | The user was unenroled (if unenrolment criteria used) | |
deleted | int(1) | The course was deleted | |
timestart | int(10) | The date/time the user enroled in the course | |
timecompleted | int(10) | The date/time the user completed the course |
course
The course table will require the following new fields:
Field | Type | Default | Info |
---|---|---|---|
enablecoursecompletion | int(1) | The course is using course completion | |
completeself | int(1) | Students can manually complete | |
completerole | int(10) | Roles can complete -- probably just use capabilities for this | |
completeactivities | int(1) | Activities must be completed | |
completegrade | int(1) | Passing grade must be achieved. | |
completebydate | int(1) | Passing grade must be achieved. | |
completeunenrol | int(1) | Unenroling completes the course | |
completenotify | int(1) | Notify users when they've completed a course |