E1863 Issues related to assignment creation: Difference between revisions
No edit summary |
|||
Line 8: | Line 8: | ||
===Issue #1008 - Issue related to staggered deadline=== | ===Issue #1008 - Issue related to staggered deadline=== | ||
If there are multiple topics added in an staggered-deadlined assignment and if the deadline of those topics are in future, students are not able to sign up for any of them. Overall assignment due dates are taking precedence, on the Due Dates tab. Due dates for the assignment needs to be changed manually to the due dates for the new topics just added. Students are able to sign up for topics only when all of the assignment due dates are in the future AND the due date for the topic they are choosing is in the future. They should be able to sign up if only the due date for the topic they are choosing is in the future. The overall assignment due dates should be irrelevant. In other words, topic should obey just the topic deadlines and not the assignment deadlines. | |||
===Issue #1017 - Issue related to deleting assignment=== | ===Issue #1017 - Issue related to deleting assignment=== | ||
Line 24: | Line 26: | ||
===Issue #1008 - Issue related to staggered deadline=== | ===Issue #1008 - Issue related to staggered deadline=== | ||
The problem here is that for staggered deadline assignments, different topics might have different deadlines. So, we will have to check deadlines for topics on an individual basis. Deadlines for individual topics are stored in a table called due_dates with the parent_id as the identifier of the particular topic in place of the assignment identifier. A logic for getting the due dates of individual topics for staggered deadline assignments is found in the method check_topic_due_date_value in the module SignUpSheetHelper. | |||
<pre> | |||
topic_due_date = TopicDueDate.where(parent_id: topic_id, deadline_type_id: deadline_type_id, round:review_round).first rescue nil | |||
if !topic_due_date.nil? | |||
due_date = topic_due_date.due_at | |||
else | |||
due_date = assignment_due_dates[review_round - 1].due_at.to_s | |||
</pre> | |||
First we check if the topic has a specific different deadline set by the instructor, and if not, then its deadline will be the same as the common deadline for the assignment. This way, we will filter out topics whose submission due dates have passed and for each of them, we will disable the selection option (Green color tick mark). | |||
Implementation: As mentioned, we are going to have to check deadlines on a topic-by-topic basis and so in the \app\views\sign_up_sheet\_all_actions.html.erb file, where we actually decide whether a student can sign up for a particular topic, we have implemented the following check to ensure that the submission deadline for that topic has not yet passed. We do this only for staggered deadline assignments as for the other assignments, this check has already taken place. | |||
===Issue #1017 - Issue related to deleting assignment=== | ===Issue #1017 - Issue related to deleting assignment=== |
Revision as of 18:52, 13 November 2018
Introduction
An instructor or TA can create assignments within a course. There are a lot of configurations that can be made while creating these assignments and there are a few known issues related to this.
Problem statement
There are 5 issues that are being dealt with in this project:
If there are multiple topics added in an staggered-deadlined assignment and if the deadline of those topics are in future, students are not able to sign up for any of them. Overall assignment due dates are taking precedence, on the Due Dates tab. Due dates for the assignment needs to be changed manually to the due dates for the new topics just added. Students are able to sign up for topics only when all of the assignment due dates are in the future AND the due date for the topic they are choosing is in the future. They should be able to sign up if only the due date for the topic they are choosing is in the future. The overall assignment due dates should be irrelevant. In other words, topic should obey just the topic deadlines and not the assignment deadlines.
There are assignments that have rubrics that vary by round, i.e. each round of the assignment review will have a different set of rubrics. When such an assignment is copied, there exists a problem where the rubrics from the original assignment are not copied over properly to the new assignment. This new assignment does not have rubrics that vary by round, as in the original assignment, but have the rubric from Round 1 in the original assignment copied over for all rounds. This makes the copying of assignments incomplete and thus, needs to be fixed.
While creating/editing an assignment, one of the configurations is setting up of the rubrics. This is done in the 'Rubrics' tab of the assignment page. While setting up the rubrics, we can assign a weight to each of it, so that the final score will be the weighted sum of the different rubric scores. The default weight of a rubric is always 0%, meaning that it's not counted towards the final score. But if any of the rubric is assigned with a non-zero weight, we need to make sure that the sum of all the weights of the various rubrics add up to 100%. This is not enforced currently, allowing the user to have a total weight which is between 0% and 100%. This needs to be fixed to bring in a hard stop, if the sum of the weights don't add up to 0% or 100%.
Proposed Solution
The problem here is that for staggered deadline assignments, different topics might have different deadlines. So, we will have to check deadlines for topics on an individual basis. Deadlines for individual topics are stored in a table called due_dates with the parent_id as the identifier of the particular topic in place of the assignment identifier. A logic for getting the due dates of individual topics for staggered deadline assignments is found in the method check_topic_due_date_value in the module SignUpSheetHelper.
topic_due_date = TopicDueDate.where(parent_id: topic_id, deadline_type_id: deadline_type_id, round:review_round).first rescue nil if !topic_due_date.nil? due_date = topic_due_date.due_at else due_date = assignment_due_dates[review_round - 1].due_at.to_s
First we check if the topic has a specific different deadline set by the instructor, and if not, then its deadline will be the same as the common deadline for the assignment. This way, we will filter out topics whose submission due dates have passed and for each of them, we will disable the selection option (Green color tick mark).
Implementation: As mentioned, we are going to have to check deadlines on a topic-by-topic basis and so in the \app\views\sign_up_sheet\_all_actions.html.erb file, where we actually decide whether a student can sign up for a particular topic, we have implemented the following check to ensure that the submission deadline for that topic has not yet passed. We do this only for staggered deadline assignments as for the other assignments, this check has already taken place.
When we save a new/existing assignment, we need to bring in a check to see if the sum of the weights of the various rubrics add up to 0 or 100%. If this check fails, we need to throw a notice that says, "Sum of weights of rubrics need to be 0 or 100%.". The user has to make the corresponding modification to the weights and try again. If the check succeeds, we continue with the assignment saving process.