Skip to content
Snippets Groups Projects
Commit 0003e5ee authored by tuhe's avatar tuhe
Browse files

updates

parent 8f329324
No related branches found
No related tags found
No related merge requests found
Metadata-Version: 2.1 Metadata-Version: 2.1
Name: unitgrade-devel Name: unitgrade-devel
Version: 0.1.35 Version: 0.1.37
Summary: A set of tools to develop unitgrade tests and reports and later evaluate them Summary: A set of tools to develop unitgrade tests and reports and later evaluate them
Home-page: https://lab.compute.dtu.dk/tuhe/unitgrade_private Home-page: https://lab.compute.dtu.dk/tuhe/unitgrade_private
Author: Tue Herlau Author: Tue Herlau
Author-email: tuhe@dtu.dk Author-email: tuhe@dtu.dk
License: MIT License: MIT
Project-URL: Bug Tracker, https://lab.compute.dtu.dk/tuhe/unitgrade_private/issues Project-URL: Bug Tracker, https://lab.compute.dtu.dk/tuhe/unitgrade_private/issues
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent Classifier: Operating System :: OS Independent
...@@ -18,8 +17,20 @@ License-File: LICENSE ...@@ -18,8 +17,20 @@ License-File: LICENSE
# Unitgrade-devel # Unitgrade-devel
**Note: This is the development version of unitgrade. If you are a student, please see http://gitlab.compute.dtu.dk/tuhe/unitgrade.** **Note: This is the development version of unitgrade. If you are a student, please see http://gitlab.compute.dtu.dk/tuhe/unitgrade.**
Unitgrade is an automatic report and exam evaluation framework that enables instructors to offer automatically evaluated programming assignments. Unitgrade is an automatic report and exam evaluation framework that enables instructors to offer automatically evaluated programming assignments. It is currently used in 02465: https://gitlab.gbar.dtu.dk/02465material/02465students
Unitgrade is build on pythons `unittest` framework so that the tests can be specified in a familiar syntax and will integrate with any modern IDE. What it offers beyond `unittest` is the ability to collect tests in reports (for automatic evaluation) and an easy and 100% safe mechanism for verifying the students results and creating additional, hidden tests. A powerful cache system allows instructors to automatically create test-answers based on a working solution.
## Why not (alternative online automatic evaluation framework)?
I think the most important thing to ask from an automatic evaluation framework is that it helps the students become better programmers.
Automatic evaluation frameworks are fundamentally about testing code. We know testing works, but we also know that not all ways of doing tests are equally good. Online testing has several clear disadvantages:
- You need to upload code and often press to see output
- No debugger
- Often encourage/requires coding in the browser, i.e. without IDE support
- They are often constraining, meaning problems must be phrased in a less than optimal way to suit the evaluation framework
For these reasons, we would never accept an online evaluation tool as a testing tool -- so why should we ask that of students?
Unitgrade is different because it is build on pythons `unittest` framework. This means tests are specified simply as unittests and will integrate with any modern IDE. What it offers beyond `unittest` is the ability to collect tests in reports (for automatic evaluation) and an easy and 100% safe mechanism for verifying the students results and creating additional, hidden tests. A cache system allows instructors to automatically create test-answers based on a working solution.
- 100% Python `unittest` compatible - 100% Python `unittest` compatible
- No configuration files - No configuration files
...@@ -51,7 +62,7 @@ Videos where I try to talk and code my way through the examples can be found on ...@@ -51,7 +62,7 @@ Videos where I try to talk and code my way through the examples can be found on
- Autolab: https://youtu.be/h5mqR8iNMwM - Autolab: https://youtu.be/h5mqR8iNMwM
# Instructions and examples of use # Instructions and examples of use
The examples can be found in the `/examples` directory: https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/tree/master/examples The examples can be found in the `/examples` directory: https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/tree/master/examples .
## A simple example ## A simple example
Unitgrade makes the following assumptions: Unitgrade makes the following assumptions:
...@@ -245,7 +256,7 @@ When this is run, the titles are shown as follows: ...@@ -245,7 +256,7 @@ When this is run, the titles are shown as follows:
| | | |_ __ _| |_| | \/_ __ __ _ __| | ___ | | | |_ __ _| |_| | \/_ __ __ _ __| | ___
| | | | '_ \| | __| | __| '__/ _` |/ _` |/ _ \ | | | | '_ \| | __| | __| '__/ _` |/ _` |/ _ \
| |_| | | | | | |_| |_\ \ | | (_| | (_| | __/ | |_| | | | | | |_| |_\ \ | | (_| | (_| | __/
\___/|_| |_|_|\__|\____/_| \__,_|\__,_|\___| v0.1.17, started: 21/09/2021 11:56:22 \___/|_| |_|_|\__|\____/_| \__,_|\__,_|\___| v0.1.17, started: 21/09/2021 11:57:05
CS 102 Report 2 CS 102 Report 2
Question 1: Week1 Question 1: Week1
...@@ -259,7 +270,7 @@ Question 2: The same problem as before with nicer titles ...@@ -259,7 +270,7 @@ Question 2: The same problem as before with nicer titles
* q2.2) Checking if reverse_list([1, 2, 3]) = [3, 2, 1]............................................................PASS * q2.2) Checking if reverse_list([1, 2, 3]) = [3, 2, 1]............................................................PASS
* q2) Total...................................................................................................... 6/6 * q2) Total...................................................................................................... 6/6
Total points at 11:56:22 (0 minutes, 0 seconds)....................................................................16/16 Total points at 11:57:05 (0 minutes, 0 seconds)....................................................................16/16
Including files in upload... Including files in upload...
* cs102 * cs102
...@@ -557,13 +568,12 @@ and TAs can choose to annotate the students code directly in Autolab -- we are h ...@@ -557,13 +568,12 @@ and TAs can choose to annotate the students code directly in Autolab -- we are h
# Citing # Citing
```bibtex ```bibtex
@online{unitgrade_devel, @online{unitgrade_devel,
title={Unitgrade-devel (0.1.27): \texttt{pip install unitgrade-devel}}, title={Unitgrade-devel (0.1.35): \texttt{pip install unitgrade-devel}},
url={https://lab.compute.dtu.dk/tuhe/unitgrade_private}, url={https://lab.compute.dtu.dk/tuhe/unitgrade_private},
urldate = {2021-09-21}, urldate = {2022-05-19},
month={9}, month={9},
publisher={Technical University of Denmark (DTU)}, publisher={Technical University of Denmark (DTU)},
author={Tue Herlau}, author={Tue Herlau},
year={2021}, year={2022},
} }
``` ```
...@@ -202,7 +202,7 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I ...@@ -202,7 +202,7 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I
os.mkdir(LAB_DEST + "/test-autograder") # Otherwise make clean will screw up. os.mkdir(LAB_DEST + "/test-autograder") # Otherwise make clean will screw up.
print(f"cd {LAB_DEST} && make && cd {CURDIR}") print(f"cd {LAB_DEST} && make && cd {CURDIR}")
cmd = f"cd {LAB_DEST} && make && cd {CURDIR}" cmd = f"cd {LAB_DEST} && make && cd {CURDIR}"
import os # import os
os.system(f"cd {LAB_DEST} && make && cd {CURDIR}") os.system(f"cd {LAB_DEST} && make && cd {CURDIR}")
os.system(f"cd {LAB_DEST} && make handout") os.system(f"cd {LAB_DEST} && make handout")
......
version = "0.1.35" version = "0.1.37"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment