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

From Expertiza_Wiki
Revision as of 23:35, 9 November 2016 by Arai (talk | contribs) (→‎Analysis)
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

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.

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

Design

Use Case

Design Pattern

Testing

References