Skip to content

Grading

Shuming edited this page Apr 23, 2019 · 3 revisions

2019 CP3108A: Team GRADING (cadet)

The project is a combination of multiple features, distributed across the client (cadet-frontend), server (cadet) and autograder (grader) repositories.

The improvements are:

  • Editor template reset button (client)
  • Integration of new XML format and autograder improvements (client and server)
  • Refactoring of autograder (server and grader)
  • Client-side public test case support (client)
  • Grading overview overhaul (client and server)
  • Server-side pagination (client and server)

Scroll below to view the documentation for the changes made to the server.


Feature 1: Editor template reset button (Completed)

Please proceed to the client repository reference.


Feature 2: Integration of new XML format (Completed)

Rationale: Update backend to support the updated XML format for creation and deployment of assessments - the updated specifications are available here.

Pull requests

Changelog
  • Changes to programming_question embedded schema
    • Added prepend and postpend fields
    • Renamed solutionTemplate field to template
  • Changes to question schema
    • Removed grader fields
    • Added public and private fields to represent public and private test cases
  • Changes to answer schema
    • Renamed autograding_errors field to autograding_results
  • Updated XML parser to handle new tags in the new XML format
  • Refactored lambda_worker.ex to accept and store all grading output results in a systematic format
  • Rewritten tests to recover coverage
Outstanding issues
  • Add autograding_status and autograding_results fields to controller and view
  • Write new tests for new XML tags

Feature 3: Refactoring of autograder (Completed)

Please proceed to the grader repository reference.


Feature 4: Client-side public test case support (In progress)

Please proceed to the client repository reference.


Feature 5: Grading overview overhaul (Completed)

Rationale: Improve the UX for graders by cleaning up the UI of the grading overview page and providing more more granular information on each submission.

Pull requests

Changelog
  • Amended grading status computation to include a new :none state for ungraded assessments
  • Added virtual grading_status, question_count and graded_count fields to the Submission schema
  • Amended all_submissions_by_grader query
    • Computes number of questions and graded questions for each submission to build grading status
    • Computes and returns pagination details along with retrieved entries to client
Outstanding issues
  • Correct tests for additional computed fields

Feature 6: Server-side pagination (Completed)

Rationale: Implement server-side pagination for the /grading endpoint (retrieval of submissions) to reduce amount of data transmitted between client and server.

Pull requests

Changelog
  • Disabled ag-grid's native pagination and added custom pagination controls
  • Added button to select pagination page size (#submisions to retrieve)
  • Amended /grading endpoint from using a HTTP GET to POST request
    • Pagination details, search, filter and sort details are all contained in the transmitted JSON body
  • Replicated search functionality server-side
    • Replaced quick filter searchbar with tag-based searching by name, assessment, category and group
  • Replicated sorting functionality server-side
  • Replicated column filter functionality server-side
    • Text-based column filters disabled
    • Number-based column filters enabled for XP and grade columns
Outstanding issues
  • Correct tests for amended output from all_submissions_by_grader and use of POST request
  • Load testing with a large database