Skip to main content

nbautoeval

nbautoeval is a very lightweight python framework for creating auto-evaluated exercises inside a jupyter (python) notebook.

two flavours of exercises are supported at this point :

  • code-oriented : given a text that describes the expectations, students are invited to write their own code, and can then see the outcome on teacher-defined data samples, compared with the results obtained through a teacher-provided solution, with a visual (green/red) feedback
  • quizzes : a separate module allows to create quizzes

At this point, due to lack of knowledge/documentation about open/edx (read: the version running at FUN), there is no available code for exporting the results as grades or anything similar (hence the autoeval name).

There indeed are provisions in the code to accumulate statistics on all attempted corrections, as an attempt to provide feedback to teachers.

Try it on mybinder

Click the badge below to see a few sample demos under mybinder.org - it's all in the demo-notebooks subdir.

NOTE the demo notebooks ship under a .py format and require jupytext to be installed before you can open them in Jupyter.

Binder

History

This was initially embedded into a MOOC on python2 that ran for the first time on the French FUN platform in Fall 2014. It was then duplicated into a MOOC on bioinformatics in Spring 2016 where it was named nbautoeval for the first time, but still embedded in a greater git module.

A separate git repo was created in June 2016 from that basis, with the intention to be used as a git subtree from these 2 repos (because at the time, adding Python libraries in order to customize the notebook runtime on the remote Jupyter platform was a pain)

Now this tool ships as a standalone Python library hosted on pypi.org, and so it can easily be added to any docker image

Installation

pip install nbautoeval

Overview

code-oriented

Currently supports the following types of exercises

  • ExerciseFunction : the student is asked to write a function
  • ExerciseRegexp : the student is asked to write a regular expression
  • ExerciseGenerator : the student is asked to write a generator function
  • ExerciseClass : tests will happen on a class implementation

A teacher who wishes to implement an exercise needs to write 2 parts :

  • One python file that defines an instance of an exercise class; this in a nutshell typically involves

    • providing one solution (let's say a function) written in Python
    • providing a set of input data - as an instance of the Args dedicated class
    • plus optionnally various tweaks for rendering results
  • One notebook that imports this exercise object, and can then take advantage of it to write jupyter cells that typically

    • invoke example() on the exercise object to show examples of the expected output
    • invite the student to write their own code
    • invoke correction() on the exercise object to display the outcome.

quizzes

Here again there will be 2 parts at work :

  • The recommended way is to define quizzes in YAML format :

    • one YAML file can contain several quizzes - see examples in the yaml/ subdir
    • and each quiz contain a set of questions
    • grouping questions into quizzes essentially makes sense wrt the maximal number of attempts
    • mostly all the pieces can be written in markdown (currently we use myst_parser)
  • then one invokes run_yaml_quiz() from a notebook to display the test

    • this function takes 2 arguments, one to help locate the YAML file
    • one to spot the quiz inside the YAML file
    • run with debug=True to pinpoint errors in the source

results and storage

Regardless of their type all tests have an exoname that is used to store information about that specific test; for quizzes it is recommended to use a different name than the quiz name used in run_yaml_quiz() so that students cant guess it too easily.

stuff is stored in 2 separate locations :

  • ~/.nbautoeval.trace contain one JSON line per attempt (correction or submit)
  • ~/.nbautoeval.storage for quizzes only, preserves previous choices, number of attempts

Known issues

see https://github.com/parmentelat/nbautoeval/issues

Metadata

Release files for nbautoeval 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nbautoeval 1.8.0
File Size Uploaded
nbautoeval-1.8.0.tar.gz 954.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nbautoeval 1.8.0
File Interpreter ABI Platform
nbautoeval-1.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / nbautoeval-1.8.0.tar.gz

Download URL nbautoeval-1.8.0.tar.gz
Size 954.6 kB
Tags Source
SHA-256 checksum
How to use checksums
55454c8bba081e54ac35f673b79d13ca264c52243f3e800af4d37fb3887afec6
BLAKE2b-256 checksum
How to use checksums
8b465c9518ac455ef22e4eceb0fbb847d4192889e5c8ba63ddcf21bb7dccea9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release files / nbautoeval-1.8.0-py3-none-any.whl

Download URL nbautoeval-1.8.0-py3-none-any.whl
Size 47.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0dd9aed1789bb7e309ea3d35549b95829400b8688bee89f12f46d68d22854c7f
BLAKE2b-256 checksum
How to use checksums
f0d577cedbe86695f522b7e1e12c992a28799846ebe799e8a0dbaa9e1322e1d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release history Release notifications | RSS feed

This release

1.8.0 This release

2 release files

1.7.0

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.0

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.1.3

1 release file

0.1.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page