Skip to main content

Alternative Grading Options for Gradescope autograder

Project description

Northeastern University Grade Scope Utility

In progress gradescope utility used for alternative grading schemes, including mastery grading and standards grading. Additionally, contains utility functions used to make the grading process easier.

Features

Tier Mastery Grading:

Focuses on mastery based grading in grading tiers, meaning grades are corrected, so only the tests are passed in order based on groups. If any test in a group stops, so does all grading until the previous group is fixed.

Common tiers are (COMMON_ONE, COMMON_TWO, COMMON_THREE, COMMON_FOUR) which is "Learning", "Approaching", "Meets", "Exceeds". To tag a test in a tier use the tier decorator. An example of a common test setup with tier grading would be as follows

Example:

    from gradescope_utils.autograder_utils.decorators import number, tags
    from neugs_utils import tier, COMMON_ONE, COMMON_TWO, COMMON_THREE

    class TestOne(unittest.TestCase):
        @tier(COMMON_THREE)
        @tags("Learning")  #tags should come *after* tiers if they are used at all
        @number(3.0)
        def test_random(self):
            result = 6
            for i in (6, 5, 61):
                self.assertEqual(result, i, "this is my message, that display due to TWO failing")

        @tier(COMMON_TWO)
        @number(2.0)
        def test_approaching(self):
            result = 3
            self.assertEqual(result, 5, "this should fail")

        @tier(COMMON_TWO)
        @number(2.0)
        def test_some_other_approaching(self):
            result = 5
            self.assertEqual(result, 5, "this should pass")

        @tier(COMMON_ONE)
        @number(1.0)
        def test_valid(self):
            self.assertEqual(5, 5, "really!")

        @tier(COMMON_ONE)
        @number(1.1)
        def test_valid2(self):
            self.assertEqual(6, 6, "really!")

Given the example above, and assuming default points of 1 point per tier, the above student would earn 1 point, and will be encouraged to submit again to completed Tier Two and Tier 3

In run_test.py make sure to change JSONTestRunner to TierMasteryJSONTestRunner

    
import unittest
from neugs_utils import TierMasteryJSONTestRunner

if __name__ == '__main__':
    suite = unittest.defaultTestLoader.discover('tests')
    with open('/autograder/results/results.json', 'w') as f:
        TierMasteryJSONTestRunner(visibility='visible', stream=f).run(suite)

Utilities:

There are also a number of additional utility functions added in common_tests.py and context_managers.py. These are meant to be for utility to help with common grading tasks.

This module is still in early stages of development!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neugs_utils-0.0.20.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neugs_utils-0.0.20-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file neugs_utils-0.0.20.tar.gz.

File metadata

  • Download URL: neugs_utils-0.0.20.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for neugs_utils-0.0.20.tar.gz
Algorithm Hash digest
SHA256 64021a2e27754754b13f2e620e67854d047f30c541262c0773329a89dac1f838
MD5 3d9d126ff2982fc45277d3e201132f06
BLAKE2b-256 6545cfb6f1039679d086b5b31313a91981571a4077d657524f1d4aed0d04e641

See more details on using hashes here.

File details

Details for the file neugs_utils-0.0.20-py3-none-any.whl.

File metadata

  • Download URL: neugs_utils-0.0.20-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for neugs_utils-0.0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 36be0755709a864f1769aa407a85f1cd224eb2e913633014b7531c3e1aabbe20
MD5 5adff2503ce8caf3d5289acbc837419e
BLAKE2b-256 5473ea491f3100b3db644132ebf8b985f34b66301ebea40d85e9b49c3634a375

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page