CSC/ECE 517 Fall 2016 E1708: Improvements to staggered-deadline assignments

From Expertiza_Wiki
Revision as of 01:24, 15 November 2016 by Arai (talk | contribs)
Jump to navigation Jump to search

Introduction

Expertiza is a web based application which can be used by instructors to assign tasks to students. Expertiza also allows students to form teams among each other, perform peer reviews on assignments and projects. It gives flexibility to instructor to allow students to see other student's work with intended limitations and impose required restrictions on student access. Expertiza has been developed as an Open Source Software (OSS) on Ruby on Rails framework.

Motivation

Expertiza open source development program has fetched many contributions from faculties and students of different universities and thus, it incorporates a wide variety of Ruby coding styles, and this has been a reason why Expertiza project is kept as CSC/ECE 517 final project. The students have been given guidelines on Ruby coding styles and many problem statement includes tasks like refactoring and writing tests which can improve uniformity in coding style. The opportunity to work on an open source project like Expertiza is also expected to provide student an introductory experience of understanding larger programs and making required contributions to them. The writing assignment along with programming assignment is expected to provide project documentation experience to students.

Description of Project

The project numbered E1708 and titled ‘Improvements to staggered-deadline assignments’ is intended to make contributors or students understand the implementation of assignments and due dates models and tables, so that they can improve on the methodology which is used to assign the due dates to assignments and topics. A staggered-deadline assignment is an assignment in which different topics have different deadlines. It can be pretty useful if different topics within an assignment can have different deadlines for submission as well as reviews. The project has been divided into three problem statements and each of them is addressing an individual functional requirement related to the staggered deadline. The statements and the proposed approaches to meet the requirements are explained below as implementation.

Project Requirements

The following issues can arise with a staggered-deadline assignment.

Problem 1: Staggered-deadline topic available for selection past its deadline

For a topic with multiple slots that is posted, if it is not selected in the first round, it is still available for selection in a later round. The team that selects the topic then is unable to submit their work as it is past deadline. A solution to this is to prohibit anyone from signing up for a topic whose submission deadline has passed.

Problem 2: Manual submission and review deadline entry required for all topics

Currently system requires instructor to enter submission and review deadlines for all topics. A probable solution to this is to allow the instructor to apply one deadline entry to a set of topics and also let the system calculate subsequent dates for subsequent project phases like review and resubmission, based on an initial deadline entry.

Problem 3: New submissions not identifiable among pool of already graded entries

Currently there is not way to identify new submissions among list of entries for which grading has already been done. There should some marker or way to distinguish new entries.

Analysis and Implementation

For Problem 1, the solution that we have chosen to implement is fix 1. We will prevent anyone from signing up for a topic whose submission deadline has passed. In order to do this we will have to modify the ‘list’ method in the sign_up_sheet_controller.rb class. In this method, currently we get the list of topics for a particular assignment:

@sign_up_topics = SignUpTopic.where(assignment_id: @assignment_id, private_to: mil)
@num_of_topics = @sign_up_topics.size

Then if the assignment is not a staggered deadline assignment and if its submission deadline has passed, then we prevent students from signing up for the assignment.

unless assignment.due_dates.find_by_deadline_type_id(1).nil?
   if !assignment.staggered_deadline? and assignment.due_dates.find_by_deadline_type_id(1).due_at < Time.now
   @show_actions = false

We will have to replicate a similar logic for staggered deadline assignments. The problem here is that for staggered deadline assignments, different topics might have different deadlines. In that case we will have to check if the deadline has passed for each individual topic. 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 topics for staggered deadline assignments is found in the method check_topic_due_date_value in class 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 and if not then its deadline will be the same as the deadline for the assignment. We will use a similar logic. This way, we will filter out topics whose submission due dates have passed and for each of them, we will set the field @show_actions to false so then the user will not be able to sign up for these topics. Possible Issues: We will have to confirm that the ‘list’ method is only method which is used for listing available topics to the user. If there is any other method being used, that will also have to be modified.

In Problem 2, the current implementation of the system requires the instructor to manually enter deadlines for the three submission review rounds which can be a painstaking task. Our requirement is to provide the instructor with the option to select a relative date for the submission review deadlines based on the Round1 submission deadline. The instructor would however like the ability to manually enter a custom date according to his needs.

One way of dealing with the above problem would be to provide an option for the other date fields for a given assignment to chose a relative date based on the initial submission date in addition to the ability to override and manually enter a custom date. Example: 3 days after Submission deadline, 6 days after re-submission deadline. This approach of implementation will only require changes to the _due_dates.html.erb view for the assignments controller.

Changes will have to be made to the due_dates_table in the _due_dates.html.erb file. Changes have to be made to the datetime_picker_roundtype_roundnumber id. We could provide the user with a drop down menu listing a possible set of relative dates to chose from, in addition to the ability to manually enter a custom date. This could be done on the view side by modifying the date fields and adding the necessary JavaScript so that appropriate date responses are filled into the corresponding date fields when an option is chose from the dropdown menu.


For Problem 3, , the grader needs to know about the new reviews done by the author since the last time grading was done. Grades for reviews are stored in the grade_for_reviewer column in the participant table. Reviews done by a Reviewer for a particular reviewee are mapped in the response_maps table and the actual data regarding the reviews (round no, comments, date, etc.) are stored in the responses table with the map_id as the foreign key. In order to implement our solution, we will add a new date_last_graded column to the participant table to store when the grading was last done. If the grader changes the grade, then the date_last_graded will change to reflect the latest date.

Now, when the grader views the review_report for a particular participant,

  1. The code gets the date_last_graded for this participant
  2. Then it checks the responses table for all the reviews that this participant has done for that assignment and compares the updated_at date for those reviews with the date_last_graded.
  3. If the updated_at date for any of those reviews is greater than the date_graded, we can change the colour of the link which is displayed for that reviewee to some different color to indicate that our author has entered a new review for that particular reviewee, and that it has not yet been graded.


Design

Use Case

Problem 1

Part1: All submission due dates are in the past, so no topic is available for signup

  1. Login as instructor6
  2. Impersonate student5695
  3. In the Assignments section, go to assignment Chapter 11-12 made up exercises
  4. Click on Sign-up sheet
  5. No topic should be displayed for signup

Part2: Change due date to after today for a topic, now it should be available for signup

  1. Login as instructor6
  2. Go to Manage - -> Courses and select CSC/ECE 506, Spring 2015
  3. Edit the assignment Chapter 11-12 madeup exercises
  4. Under the General tab, select Staggered deadline assignment
  5. Go to Topics tab and scroll down to the bottom and click on Show start/due date
  6. Make the submission deadline for topic 11.2 as any date after today
  7. Follow the steps in part 1
  8. Now this topic 11.2 should be available for signup. All others remain unavailable

Problem 2

Part1: Instructor wants to assign default deadlines to a staggered assignment

In this case, the default deadlines for the assignment will be filled automatically based on the submission date for Round 1. In this case no further input from the instructor is required apart from selecting the round 1 submission deadline

  1. Login as instructor6
  2. Go to assignments and either create a new one or edit a pre-existing one.
  3. Change assignment type to staggered.
  4. Chose a submission deadline for round 1.
  5. Deadlines for all other rounds will be autopopulated.

Part2: Instructor wants to enter custom deadlines for a staggered assignment

In this case, the instructor has two options. He can either chose a deadline from a list of other relative deadlines from the dropdown menu for a particular round or all rounds, or he can decide to override the system enter a date manually by selecting the “Custom Date” option.

  1. Login as instructor6
  2. Go to assignments and either create a new one or edit a pre-existing one.
  3. Change assignment type to staggered.
  4. Chose a submission deadline for round 1.
  5. Deadlines for all other rounds will be autopopulated.
  6. Change all the deadlines for the other rounds according to your requirements by choosing the "Custom Date" option

Part3: Instructor wants to enter a custom deadline only for a particular round

In this case, the instructor can set the submission deadline for round 1. This would result in all deadlines being populated relatively according to the pre-set values. The instructor can then, if need be, modify the deadline for a particular round by either selecting a different relative date or by entering a custom date manually.

  1. Login as instructor6
  2. Go to assignments and either create a new one or edit a pre-existing one.
  3. Change assignment type to staggered.
  4. Chose a submission deadline for round 1.
  5. Deadlines for all other rounds will be autopopulated.
  6. Change all the deadlines for the necessary round by either entering a manual date or by choosing a different relative date from the dropdown.

Problem 3

  1. Login as instructor6
  2. Go to courses tab
  3. For CSC/ECE 506, Spring 2015, go to edit assignments and choose Chapter 11-12 madeup exercises
  4. Edit this and make it a staggered deadline assignment. Also change the review due dates for the first round to any date beyond today
  5. Now impersonate student5695 (This user had selected one topic to be reviewed, but he never completed the review)
  6. Complete this review and submit it.
  7. Now revert back to instructor6 and go to view review report for this assignment
  8. Find user 5695. We should be able to see one review done by him (4383) and the colour should be blue (colour not yet decided) indicating that this is not yet graded.
  9. Now go ahead and grade this review
  10. The colour should change to the normal brownish colour.
  11. Now again impersonate student5695
  12. Go to this assignment and choose another topic for review (There will be only 1 available)
  13. Submit some review for this topic
  14. Now revert back to instructor6
  15. View review report for this assignment
  16. For student5695, we can now see 2 review submissions. One will be brown (4383) indicating that this one has been graded. The new one (5678) will be blue, indicating this one is yet to be graded.

References

Expertiza home page
Github Wikipedia Page
Ruby on Rails Wikipedia Page