CSC/ECE 517 Fall 2023 - E2375. Reimplement Waitlists: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 34: Line 34:
* signed_up_team.rb
* signed_up_team.rb


# sign_up_sheet_controller.rb
'''sign_up_sheet_controller.rb'''
 
[[File:Signup_sheet_controller.png]]
[[File:Signup_sheet_controller.png]]




# teams_controller.rb
'''teams_controller.rb'''
 
[[File:Signup_team.png]]
[[File:Signup_team.png]]




# sign_up_topic.rb
'''sign_up_topic.rb'''
 
[[File:Signup_topic.png]]
[[File:Signup_topic.png]]


Line 48: Line 51:




# signed_up_team.rb
''''signed_up_team.rb'''
 
[[File:Team_controller.png]]
[[File:Team_controller.png]]

Revision as of 20:32, 30 October 2023

Introduction

Expertiza is a Ruby on Rails-based open-source project, collaboratively developed and maintained by both students and faculty at NC State. This web application empowers instructors with comprehensive control over their class assignments. With a rich set of features including the ability to add topics, establish groups, and facilitate peer reviews, Expertiza is a robust and versatile platform capable of handling a wide range of assignment types. To explore the extensive functionality provided by Expertiza, you can delve into its wiki.

Topic Overview & Prior Work

Feature Overview

E2281 contains detailed information on the previous team's work with this feature.

A summary of the desired functionality is presented below:

Any instructor or TA can sign students up for a topic. Students are able to sign themselves up for a topic. If the topic is full then the team will be put on a queue or "waitlist" for the topic. If the current team holding that topic drops the topic, then the team at the top of the waitlist will be assigned the topic.

Issues we found in Current Functionality

  • When a team is deleted, and if that team currently holds a particular topic, that team is also being deleted. However, the topic is not being assigned to the next team that is at the top of the waitlist queue.

Approach Followed By Previous Team

  • The previous team have created a new class for Waitlists that inherits from Ruby's Queue class. Within that class there is a model, and controller that will house all of the functionality relating to Waitlists.

Comments on why E2240, was not merged

  1. The code for the waitlist is distributed all over the application, which is something could have been placed into a single model and called through other files
  2. Although manual testing looked solid, there were not enough automated test cases to back their functionality.
  3. Too many class methods. A design with multiple class methods is not taking advantage of object orientation, which says that all actions should be structured as operations on a specific receiver.
  4. The code does not follow Ruby style design.
  5. Lack of descriptive code comments

Files Modified During the implementation

  • sign_up_sheet_controller.rb
  • teams_controller.rb
  • sign_up_topic.rb
  • signed_up_team.rb

sign_up_sheet_controller.rb


teams_controller.rb


sign_up_topic.rb


'signed_up_team.rb