Skip to content
Snippets Groups Projects
Select Git revision
  • 094375e154591bc886b6a1b5592051decc3dd09e
  • master default protected
2 results

PKG-INFO

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    PKG-INFO 16.55 KiB
    Metadata-Version: 2.1
    Name: unitgrade
    Version: 0.1.30.1
    Summary: A student homework/exam evaluation framework build on pythons unittest framework.
    Home-page: https://lab.compute.dtu.dk/tuhe/unitgrade
    Author: Tue Herlau
    Author-email: tuhe@dtu.dk
    License: MIT
    Project-URL: Bug Tracker, https://lab.compute.dtu.dk/tuhe/unitgrade/issues
    Classifier: Programming Language :: Python :: 3
    Classifier: License :: OSI Approved :: MIT License
    Classifier: Operating System :: OS Independent
    Requires-Python: >=3.8
    Description-Content-Type: text/markdown
    License-File: LICENSE
    
    # Unitgrade
    Unitgrade is an autograding framework which enables instructors to offer automatically evaluated programming assignments in a maximally convenient format for the students.
    
    Unitgrade is build on pythons `unittest` framework; i.e., you can directly use your existing unittests without any changes. It will therefore integrate well with any modern IDE. What it offers beyond `unittest` is the ability to collect tests in reports (for automatic evaluation) 
    and an easy and safe mechanism for verifying results. 
    
     - 100% Python `unittest` compatible
     - Integrates with any modern IDE (VSCode, Pycharm, Eclipse)
     - No external configuration files
     - Hint-system collects hints from code and display it with failed unittests
     - A dashboard gives the students an overview of their progress
     - Safe and convenient to administer
     - 
    ### Why this instead of an online autograder?
    Online autograding services often say that they have adapter their particular model in order to make students better or happier. I did a small thought-experiments, and asked myself what I would ideally want out of an autograder if I was a student. I quickly realized the only thing I really cared about was easily it allowed me to fix bugs in my homework assignments. In other words, I think students prioritize the same thing as we all do when we write software tests -- to quickly and easily identify and fix problems.
    
    However, I would not use an online autograder for any of my own software projects for a number of reasons:
     - Why would I want my tests to be executed in another environment than my development-environment? 
     - Why would I want to copy-paste code online (or rely on a sub-standard web-IDE without autocomplete?)
     - The lack of a debugger would drive me nuts
     - Why `alt+tab` to an external tool when my IDE already has excellent test plugins?
     - *Your test will be run within a few minutes* 
     - Something as basic as `print`-statements is often not readily available; I don't know any services that shows them live
     - Often students have no access to the tests themselves, perhaps because they rely on special terminal commands. This means it can be hard to reason about what code is *actually* being run.
    
    This raises the question that if I would not want to use an online autograder as a way to fix issues in my own software projects, why should students prefer it? 
    
    The alternative is in my view obvious -- simply give students a suite of unittests. This raises some potential issues such as safety and administrative convenience, but they turned out to be easy to solve. If you want to learn more about developing tests see the test-development repository here:  https://gitlab.compute.dtu.dk/tuhe/unitgrade_private 
    
    ## Installation
    Unitgrade requires python 3.8 or higher, and can be installed using `pip`:
    ```terminal
    pip install unitgrade
    ```
    After the command completes you should be all. If you want to upgrade an old version of unitgrade run:
    ```terminal
    pip install unitgrade --upgrade --no-cache-dir
    ```
    If you are using anaconda+virtual environment you can also install it as you would any other package:
    ```terminal
    source activate myenv
    conda install git pip
    pip install unitgrade
    ```
    When you are done, you should be able to import unitgrade. Type `python` in the termial and try:
    ```pycon
    >>> import unitgrade
    ```
    
    ## Using Unitgrade
    Your homework assignments are called **reports** and are distributed as a regular `.py`-files. In the following I will use `cs101report1.py` as an example, and you can find a real-world example here: https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/blob/master/examples/example_simplest/students/cs101/report1.py .
    
    A report is simply a collection of questions, and each question may in turn involve several tests.