Skip to main content

Tool infrastructure for building and running "self-driven lab" courses

Project description

Documentation Status

sedrila: Tool infrastructure for building and running "self-driven lab" courses

A "self-driven lab" (SeDriLa) course is one where students select freely a subset from a large set of tasks. The tasks are described with sufficient detail that no guidance from an instructor is needed most of the time.

sedrila is a command-line tool supporting course authors for authoring a course and then course instructors and students for executing it.

Find the documentation at readthedocs.

1. Ideas for future versions

1.1 A currently needed refactoring: Target directory structure

The current layout of the source tree is wrong. Currently, the templates and baseresources directories will end up as top-level directories when the package is installed, which means they will clash with any top-level modules of that name anywhere in our dependencies.

We need to perform the following refactorings to arrive at a proper structure:

  • py --> sedrila: This will be the top level directory that gets installed.
  • sedrila/sdrl/* --> sedrila/*: We remove the now-intermediate namespace. This implies joining the current sdrl/tests into sedrila/tests.
  • templates --> sedrila/templates: The HTML templates simply become part of the tree to be installed.
  • baseresources --> sedrila/baseresources: Ditto.

These changes require a lot of changes of import statements. For instance, the current module base will become sedrila.base and sdrl.course will become sedrila.course. The logic for computing sedrila_libdir in courses.py must be adapted. SedrilaArgParser.get_version() must be adapted. The files lists in pyproject.toml must be corrected.

1.2 instructor: Handling instructors' trees of student repos

  • Process SEDRILA_INSTRUCTOR_COURSE_URLS as described in the instructor documentation.
  • sedrila instructor should keep a JSON file student_course_urls.json that maps student usernames to the course URL first seen for that student, because if a student ever changed the URL in the student.yaml, prior signed commits of instructors might become invalid semantically if the new course has a different set of tasks.
    The map is added to when a student.yaml is first seen and checked against at each later time.
    Note that a student taking part a second time, with a fresh repo, might require manual editing of that JSON file to remove that entry.
  • Better yet, there could be an option sedrial instructor --allow-repo2 that performs that editing automatically and also checks that the new repo contains no instructor-signed commits.
  • Command sedrila instructor --clean-up-repos-home to clean up instructor work directory trees-of-trees by deleting all level-1 subtrees in which the student.yaml has a course_url that is not mentioned in the SEDRILA_INSTRUCTOR_COURSE_URLSenvironment variable. This option should ask a safety question before starting to work.
  • Add sedrila instructor --http which presents the local directory tree to localhost as follows:
    • Show directory, each file is a hyperlink, including .. (except in the starting directory)
    • *.md files get rendered as Markdown
    • *.txt files get shown verbatim
    • *.py file contents are Markdown-rendered as a Python code block. Ditto for other languages.

2. Development process: TODO-handling during development

We use this convention for the development of sedrila. It may also be helpful for course authors if the team is small enough.

If something is incomplete, add a TODO marker with a priorization digit and add a short description of what needs to be done. Examples:

  • TODO 1: find proper formulation
  • TODO 2: restructure to use ACME lib
  • TODO 3: add automatic grammar correction

Priorities:

  • 1: to be completed soon (within a few days)
  • 2: to be completed once the prio 1 things are done (within days or a few weeks)
  • 3: to be completed at some later time (usually several weeks or more into the future, because it is big) or never (because it is not-so-important: "nice-to-have features")

Then use the IDE global search to work through these layer-by-layer. Demote items to a lower priority when they become stale or remove them. Kick out prio 3 items when they become unlikely.

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

sedrila-2.3.0.tar.gz (67.3 kB view details)

Uploaded Source

Built Distribution

sedrila-2.3.0-py3-none-any.whl (79.8 kB view details)

Uploaded Python 3

File details

Details for the file sedrila-2.3.0.tar.gz.

File metadata

  • Download URL: sedrila-2.3.0.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.11.2 Linux/5.15.153.1-microsoft-standard-WSL2

File hashes

Hashes for sedrila-2.3.0.tar.gz
Algorithm Hash digest
SHA256 e2ad010dde7f191f7607e0c902b11f000d89ebe385366f54a847a3216298d57c
MD5 b156aebefefb703eb6932c120cddb896
BLAKE2b-256 ed51d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9

See more details on using hashes here.

File details

Details for the file sedrila-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: sedrila-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 79.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.11.2 Linux/5.15.153.1-microsoft-standard-WSL2

File hashes

Hashes for sedrila-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7433bcc8c06512772ffcf209e82b18defb051d51784bd60baa72b563c33f132e
MD5 cf411bb0afe896c74cd1f8658cfde08a
BLAKE2b-256 5af631522d777d01dec58e08aec3fccff2a505eeb36d921bccdbf8865162c6fb

See more details on using hashes here.

Supported by

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