Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better control over status/points given to users that are not enrollled at the time of a session. #687

Open
preney opened this issue Jun 16, 2023 · 3 comments

Comments

@preney
Copy link

preney commented Jun 16, 2023

[Per the reply message, I have reworded this original post to better explain what this issue's problem is and how it can be solved.]

First let's note these three scenarios can happen in a Moodle courses:

  • Students can be enrolled in a course BEFORE an attendance session time period. (Clearly, if this is before all attenance session time periods, then this is a non-issue. If not, then either or both of the next two bullets apply.)
  • Students can be enrolled in a course DURING an attendance session time period, possibly with attendance sessions BEFORE the enrolment. (The attendance sessions before the enrolment could never have been attended and should be able to be noted as such --not just as "absent".)
  • Students can be enrolled in a course AFTER attendance sessions, possibly with attendance sessions BEFORE the enrolment. (The attendance sessions before the enrolment could never have been attended and should be able to be noted as such --not just as "absent". The attendance session(s) during the enrolment may or may not have been also attended but should also be able to be treated specially.)

NOTE: The second and third bullets above is what this issue is about concerning the Attendance plugin's automarking of attendance.

If one is not enrolled in a course, then attendance is "Not present" (with points or without). The simplest case is the student is "Absent" and automarking as implemented by the plugin does this well. However, there are times when being "Not Enrolled" should be noted instead of "Absent". The latter essentially has two scenarios:

  • "Not Enrolled" without points, and,
  • "Not Enrolled" with points --referred to as "Excused" below.

"Not Enrolled" without points is an absence but it formally recognizes that the student was not enrolled and therefore implies that they could never have attended. This matters when one (possibly not the teacher) is looking at a students attendance data: "Absent" would imply they could/should have attended whereas "Not Enrolled" means they couldn't have attended.

"Excused" represents the scenario where the student could not attend and was granted the points as if they had attended. The attendance plugin does note when someone enrols in a course late with the time and date --but not as a status set item.

Currently the Attendance plugin requires the Teacher to find all students not enrolled and set "Not Enrolled" or "Excused" manually as the automarking feature does not support dealing with not enrolled scenarios. When there are dozens/hundreds of students in a course, doing this is error prone and must be done manually for EACH attendance session. Worse, if one (incorrectly) uses the "Manually trigger automatic marking" button in an attendance session --which can set entries for absence, then such will mark everyone that could not possibly been present as absent instead of "Not Enrolled"/"Excused". Additionally, there is no way to UNSET a value that is set. (By default, persons not enrolled won't have an attendance status set item set --but if one is set there is no way to unset such.) The end result is that this can easily and incorrectly increase the reported absence numbers for persons that could never have attended.

Currently the attendance plugin allows one to set:

  • Self-marking availability
  • Available before session starts
  • Automatically set when not marked

The last item, "Automatically set when not marked", is appropriate for marking persons as absent --but it is not appropriate for marking persons as "Excused"/ "Not enrolled" or "Absent" since it does not distinguish between not being enrolled and unmarked versus being enrolled and unmarked.

Instead "Automatically set when not marked" should be:

  • Automatically set when not marked AND enrolled, i.e., absent
  • Automatically set when not marked AND not enrolled, i.e., not enrolled

Since attendance session time periods are intervals, an ambiguity does arises when a student enrols during an attendance session --should this person be marked absent or as not enrolled. My thoughts are that such should be left for the Teacher to determine this, e.g., perhaps by instead having three "Automatically set when not marked" choices:

  • Automatically set when not marked AND enrolled, i.e., absent
  • Automatically set when not marked AND not enrolled, i.e., not enrolled
  • Automatically set when not marked AND enrolled during an attendance session

where the teacher can identify the appropriate status set items.

NOTE: This issue is requesting that the status set page changes the single scenario of "Automatically set when not marked" to that of the (last) three bullets above with associated functionality. The default of all three could be the same --but each should be able to be set to different status items.

For example, consider the following status set for a 60 minute session:

  • E, Excused, 1 point, No self-marking availability
  • P, Present, 1 point, Limited time 10 minutes, Available before session start
  • L, Late, 0.67 points, Limited time 20 minutes
  • VL, Very late, 0.5 points, Limited time 30 minutes
  • EL, Extremely late, 0.33, Limited time 40 minutes
  • N, Noted, 0.01, Limited time 60 minutes
  • A, Absent, 0.00, No self-marking availability, Automatically set when not marked
  • NE, Not Enrolled, 0.00, No self-marking availability

Then for the three "Automatically set when not marked" choices, the following might be set:

  • Automatically set when not marked AND enrolled => Absent
  • Automatically set when not marked AND not enrolled => Not Enrolled
  • Automatically set when not marked AND enrolled during an attendance session => Excused

and the Teacher could override things manually if needed.

Finally, why might one want "Not enrolled" (with no points) and "Excused" (with points) and an "Absent" (with no points)?

  • Scenario A: Suppose "Attendance Certificates" are given based on the attendance score. If someone enrols in the middle of a number of attendance sessions, in certain contexts he/she should be Excused for the previous sessions that he/she could not attend and the remaining sessions are tallied. If Excused has the points of being present, then this works.
  • Scenario B: Suppose "Attendance Certificates" are given based on the attendance score. If someone enrols in the middle of a number of attendance sessions, in certain contexts he/she should be Not Enrolled for the previous sessions that he/she could not attend and the remaining sessions are tallied. In this case the points might not add up but perhaps the teacher is adding up points from other activities towards such a certificate. (For example, having done course work related to items before the enrolment might justify the attendance certificate.)

Which of these scenarios apply depends on the particulars of a course.

@danmarsden
Copy link
Owner

Hi @preney - thanks for the request - if you could please edit this a bit to define the "problem" first that you are trying to solve... I'm not quite convinced that we need to control it at the status set like this so having the problem described a bit better would be useful.

I'm unlikely to have time to work on this sort of feature as a volunteer, but pull requests or funding for development time are always welcome.

@danmarsden danmarsden changed the title Status set needs option to set for not enrolled. Better control over status/points given to users that are not enrollled at the time of a session. Jun 19, 2023
@preney
Copy link
Author

preney commented Jun 19, 2023

Hi @danmarsden: I completely rewrote the original post above to hopefully better explain things more clearly and to better explain what this issue is requesting. :-)

@danmarsden
Copy link
Owner

wow - thanks for expanding on that - there are a couple of things there that aren't quite right when explaining current behavior - if a user is enrolled after some of the existing sessions then the reports exclude those sessions when calculating the grades for that user - there is no "status" recorded for the user in those sessions at all.

But yes - I can see how it would be useful to allow the teacher (or admin) to control some of this behaviour. The solution here might be a little more complex than you describe above because at the moment no status is set in these sessions (unless a teacher has done this manually after the session.) - we'd need to tie into enrolment events and take action based on this, and the reporting code will all need updating to take these settings into account (not a small amount of work.)

I don't think I'd have time as a volunteer to peer review a large patch like this either, so if you intend to do this development yourself I'd expect it might sit here for a while waiting for it to be properly peer reviewed. (automated tests that check the functionality would help)

of course - if you would like to fund development, feel free to reach out privately and I can look at ballparking the effort/cost required.

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants