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

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 11: Line 11:
The following issues can arise with a staggered-deadline assignment.
The following issues can arise with a staggered-deadline assignment.


===Problem 1: Staggered-deadline topic available for selection past its deadline===
''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.
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===
''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.
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===
''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.
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.



Revision as of 13:03, 10 November 2016

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.

        html += '<td class="due_date_name" width="15%">';
        if (round_no != 0) {
            html += 'Round ' + round_no + ': ' + capitalize(deadline_type);
        } else {
            html += capitalize(deadline_type.replace("_", " "));
        }
        html += '</td>';
        var due_at = due_date.due_at;
        if (due_at == null) {
            due_at = '';
        }
        else{
            var tzone = due_at.substr(23,6);
            if(tzone=='Z'){
                tzone = '+00:00';
            }
            var timezone = "(UTC "+tzone.toString()+")";
            due_at = due_at.substr(0,4)+'/'+due_at.substr(5,2)+'/'+due_at.substr(8,2)+' '+due_at.substr(11,2)+':'+due_at.substr(14,2)+' '+timezone;
        }
        var due_name = due_date.deadline_name;
        if (due_name == null){
            due_name = '';
        }
        html += '<td align="center" class="due_date_due_at" width="25%">' +
        '<input id="datetimepicker_' + element_id +
        '" name="assignment_form[due_date][][due_at]" style="width: 200px" type="text" value="' +
        due_at + '">' + '</td>';
        
        html += '<td align="center" class="due_date_due_at" width="10%">';
        // if(deadline_type == 'team_formation'){
        //     html += '<select id="due_date_submission_allowed_id" name="assignment_form[due_date][][submission_allowed_id]" disabled>'
        // }
        // else{
        html += '<select id="due_date_submission_allowed_id" name="assignment_form[due_date][][submission_allowed_id]">'
        // }

For Problem 3, we can display the hyperlinks of submitted reviews already graded by the instructor with a different colour.

Design

Use Case

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

References

Expertiza home page
Github Wikipedia Page
Ruby on Rails Wikipedia Page