RELATE is an Environment for Learning And TEaching

Overview

RELATE

Relate is an Environment for Learning And TEaching

Gitlab Build Status Github Build Status Codecov Coverage Status Python Package Index Release Page
https://raw.githubusercontent.com/inducer/relate/master/doc/images/screenshot.png https://raw.githubusercontent.com/inducer/relate/master/doc/images/screenshot-2.png

RELATE is a web-based courseware package. It is set apart by the following features:

  • Focus on easy content creation

    • Simple, text-based format for reusable course content
    • Based on standard YAML, Markdown

    See example content.

  • Flexible rules for participation, access, and grading

  • Versioning of content through deep integration with git. Instructors can preview newly-authored content while students work with prior versions, all from the same instance of RELATE.

  • Multiple courses can be hosted on the same installation

  • Code questions:

    • Allow students to write code into a text box (with syntax highlighting)
    • Sandboxed execution
    • Automatic grading
    • Plotting support
    • Optional second-stage grading by a human
  • Class calendar and grade book functionality.

  • Statistics/analytics of student answers.

  • Facilitates live quizzes in the classroom.

  • In-class instant messaging via XMPP. Works well with xmpp-popup.

  • Built-in support for VideoJS offers easy-to-use support for integrating HTML5 video into course content without the need for third-party content hosting.

Links

More information around the web:

Installation

See the installation guide.

License

Copyright (C) 2014-15 Andreas Kloeckner

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Add inst_id field in user-profile-form.html

    Add inst_id field in user-profile-form.html

    Let users submit their own institutional ID. Once submitted, the field is disabled. Allowing no_id option, for other teachers/staffs who are not students, or in cases when some students may be inclined to submit the inst_id later.

    opened by dzhuang 20
  • [WIP] Allow upgrade to Django 2.0

    [WIP] Allow upgrade to Django 2.0

    cc @dzhuang

    Also jump onto new version of Celery.

    Things to resolve:

    • [x] Django 2.0 drops Py2
    • [x] Update install docs: Celery 4 requires a message broker, e.g. redis or rabbitmq
    opened by inducer 19
  • Make RELATE language-agnostic by allowing specification of Docker containers.

    Make RELATE language-agnostic by allowing specification of Docker containers.

    This contributes further towards #631, creating support for non-Python questions.

    The current version (c6943a7) adds support for specifying Docker containers, although the default on everything is still Python. Terminology such as runpy has been switched to runcode. The Docker image inducer/relate-runcode-python has been introduced.

    opened by davis68 18
  • Remove

    Remove "big data" from the database

    Before this change, Relate stores uploaded files in the database, which makes DB dumps (mainly for backups) unwieldy and unpleasant to work with. It likely also needlessly slows down the database. The large (20-ish GB) database dumps are one main reason why running Relate has become an unpleasant chore for me. This is intended to help address that.

    With this change, new submissions will be stored in the file system (or, to be technically correct, a configurable Django Storage). Old submissions can be migrated over time with a new management command that this introduces.

    I'd be grateful for reviews and testing here, particularly since there's a very real possibility of data loss in case there are issues.

    cc @joshuata

    opened by inducer 14
  • ShortAnswer Text Box Disappears

    ShortAnswer Text Box Disappears

    When an answer is submitted to a ShortAnswer question, RELATE will accept the input and grade it correctly. However, the text box disappears, so students cannot see their answer and cannot immediately submit a new answer. To bring the text box back so that they can try again, students must click 'Submit Answer for Feedback', after which RELATE will bring back the text box with the usual error message about not submitting an empty answer.

    opened by bowmanat 14
  • Use flow_desc to control display/hide of a gopp for participants

    Use flow_desc to control display/hide of a gopp for participants

    Under current mechanism, a gopp is created if I test the flow in my account. That will let my student see it in their grade book. Sometimes I don't want student to see some gopp that are supposed to start later (like a month later) and kept answering their question "when should I submit that assignment" or "when can I start that session".

    So in this patch, I am using flow_desc to control whether a gopp should be displayed in participant's grade book. I know this patch is somewhat dirty, because the permission added is not for a session, but a gopp. However, the benefit is that I don't need to manually set whether those flows should be display in participants' gradebook. Or, is there a better way to do that?

    opened by dzhuang 13
  • Migrate testing to pytest

    Migrate testing to pytest

    I saw that #672 had stalled. This is a basic implementation of pytest integration including automatically load the postgres tests if it is connected to a postgres database.

    If a user runs pytest, it will run the fast tests, pytest --slow runs the slow tests, and pytest --all runs all tests.

    I would recommend migrating to FactoryBoy over the next while since it would replace a lot of the setup/teardown functions and the mixin classes and replace them with native pytest fixtures that allow much easier customization.

    opened by joshuata 11
  • It won't raise expected error when nestedly use course_view decorator

    It won't raise expected error when nestedly use course_view decorator

    https://github.com/inducer/relate/blob/63a25b66a45dd2e50dab30124da2a91e4fec14e0/course/utils.py#L683

    If I decorate https://github.com/inducer/relate/blob/63a25b66a45dd2e50dab30124da2a91e4fec14e0/course/utils.py#L845 with course_view, it just failed with 404, not the expected error.

    The _is_in_context_manager are unknow to each other in different CoursePageContext instances..

    opened by dzhuang 11
  • Python code submission fails

    Python code submission fails

    Hello I am having trouble submitting python code from question 8 quiz. I get the following error:

    Autograder feedback The grading code failed. Sorry about that. The staff has been informed, and if this problem is due to an issue with the grading code, it will be fixed as soon as possible. In the meantime, you'll see a traceback below that may help you figure out what went wrong.

    This is the exception traceback:

    Traceback (most recent call last): File "C:\Users\kjeanpie\Desktop\SAILS\relate\course\page\code.py", line 565, in grade run_timeout=self.page_desc.timeout) File "C:\Users\kjeanpie\Desktop\SAILS\relate\course\page\code.py", line 250, in request_python_run_with_retries result = request_python_run(run_req, run_timeout, image=image) File "C:\Users\kjeanpie\Desktop\SAILS\relate\course\page\code.py", line 109, in request_python_run user="runpy") File "C:\python27_x64\lib\site-packages\docker\client.py", line 245, in create_container return self.create_container_from_config(config, name) File "C:\python27_x64\lib\site-packages\docker\client.py", line 252, in create_container_from_config res = self._post_json(u, data=config, params=params) File "C:\python27_x64\lib\site-packages\docker\clientbase.py", line 128, in _post_json return self._post(url, data=json.dumps(data2), *_kwargs) File "C:\python27_x64\lib\site-packages\docker\clientbase.py", line 83, in _post return self.post(url, *_self._set_request_timeout(kwargs)) File "C:\python27_x64\lib\site-packages\requests\sessions.py", line 508, in post return self.request('POST', url, data=data, json=json, *_kwargs) File "C:\python27_x64\lib\site-packages\requests\sessions.py", line 465, in request resp = self.send(prep, *_send_kwargs) File "C:\python27_x64\lib\site-packages\requests\sessions.py", line 573, in send r = adapter.send(request, *_kwargs) File "C:\python27_x64\lib\site-packages\requests\adapters.py", line 370, in send timeout=timeout File "C:\python27_x64\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 544, in urlopen body=body, headers=headers) File "C:\python27_x64\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 349, in _make_request conn.request(method, url, *_httplib_request_kw) File "C:\python27_x64\lib\httplib.py", line 973, in request self._send_request(method, url, body, headers) File "C:\python27_x64\lib\httplib.py", line 1007, in _send_request self.endheaders(body) File "C:\python27_x64\lib\httplib.py", line 969, in endheaders self._send_output(message_body) File "C:\python27_x64\lib\httplib.py", line 829, in _send_output self.send(msg) File "C:\python27_x64\lib\httplib.py", line 791, in send self.connect() File "C:\python27_x64\lib\site-packages\docker\unixconn\unixconn.py", line 39, in connect sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) AttributeError: 'module' object has no attribute 'AF_UNIX'

    I am using a Windows machine (10).

    opened by duwhop 11
  • Fixed bug (see #391) and sped up course creation for tests.

    Fixed bug (see #391) and sped up course creation for tests.

    • Bug: this line happened to get passed tests (now it won't).
    • Use cache to memorize the git repo path of previously created course, to speed up tests.
    opened by dzhuang 10
  • Issues creating a new course site

    Issues creating a new course site

    Hello,

    I wanted to know if it was possible to help me. I followed the instructions from the install page (http://documen.tician.de/relate/misc.html?highlight=css). I keep getting an error (WindowsError: [Error 32] The process cannot access the file because it is being used by another process: u'.....pack....idx'). I have been googling how to rectify this issue but I have been unsuccessful. I am working on a Windows machine. I have python 2.7.6 installed. I look forward to hearing from you soon thank you!

    opened by duwhop 10
A simple wrapper to analyse and visualise reinforcement learning agents' behaviour in the environment.

Visrl Visrl (pronounced "visceral") is a simple wrapper to analyse and visualise reinforcement learning agents' behaviour in the environment. Reinforc

Jet New 14 Jun 27, 2022
AndroidEnv is a Python library that exposes an Android device as a Reinforcement Learning (RL) environment.

AndroidEnv is a Python library that exposes an Android device as a Reinforcement Learning (RL) environment.

DeepMind 814 Dec 26, 2022
BridgeWalk is a partially-observed reinforcement learning environment with dynamics of varying stochasticity.

BridgeWalk is a partially-observed reinforcement learning environment with dynamics of varying stochasticity. The player needs to walk along a bridge to reach a goal location. When the player walks off the bridge into the water, the current will move it randomly until it gets washed back on the shore. A good agent in this environment avoids this stochastic trap

Danijar Hafner 6 Jun 13, 2022
pyToledo is a Python library to interact with the common virtual learning environment for the Association KU Leuven (Toledo).

pyToledo pyToledo is a Python library to interact with the common virtual learning environment for the Association KU Leuven a.k.a Toledo. Motivation

Daan Vervacke 5 Jan 3, 2022
The mock Pokemon Environment I built in 2019 to study Reinforcement Learning + Pokemon

ghetto-pokemon-rl-environment ##NOT MAINTAINED! Fork and maintain yourself. Environment I made back in 2019 to use Pokemon to practice reinforcement l

null 2 Dec 9, 2021
Exercise to teach a newcomer to the CLSP grid to set up their environment and run jobs

Exercise to teach a newcomer to the CLSP grid to set up their environment and run jobs

Alexandra 2 May 18, 2022
Python implementation of an automatic parallel parking system in a virtual environment, including path planning, path tracking, and parallel parking

Automatic Parallel Parking: Path Planning, Path Tracking & Control This repository contains a python implementation of an automatic parallel parking s

null 134 Jan 9, 2023
Application launcher and environment management

Application launcher and environment management for 21st century games and digital post-production, built with bleeding-rez and Qt.py News Date Releas

null 10 Nov 3, 2022
This simple script generates a backup of a given Python and R environment

Python Environment Backup It’s always good to maintain your Python and R Anaconda environment packages properly listed and well-kept in case you have

Andrew Laganaro 1 Jul 13, 2022
Collection of tools to be more productive in your work environment and to avoid certain repetitive tasks. 💛💙💚

Collection of tools to be more productive in your work environment and to avoid certain repetitive tasks. ??????

Raja Rakotonirina 2 Jan 10, 2022
Identify unused production dependencies and avoid a bloated virtual environment.

creosote Identify unused production dependencies and avoid a bloated virtual environment. Quickstart # Install creosote in separate virtual environmen

Fredrik Averpil 7 Dec 29, 2022
Transparently load variables from environment or JSON/YAML file.

A thin wrapper over Pydantic's settings management. Allows you to define configuration variables and load them from environment or JSON/YAML file. Also generates initial configuration files and documentation for your defined configuration.

Lincoln Loop 90 Dec 14, 2022
My solution for a MARL problem on a Grid Environment with Q-tables.

To run the project, run: conda create --name env python=3.7 pip install -r requirements.txt python run.py To-do: Add direction to the state space Take

Merve Noyan 12 Dec 25, 2021
A step-by-step tutorial for how to work with some of the most basic features of Nav2 using a Jupyter Notebook in a warehouse environment to create a basic application.

This project has a step-by-step tutorial for how to work with some of the most basic features of Nav2 using a Jupyter Notebook in a warehouse environment to create a basic application.

Steve Macenski 49 Dec 22, 2022
pydock - Docker-based environment manager for Python

pydock - Docker-based environment manager for Python ⚠️ pydock is still in beta mode, and very unstable. It is not recommended for anything serious. p

Alejandro Piad 16 Sep 18, 2021
Minimalistic Gridworld Environment (MiniGrid)

Minimalistic Gridworld Environment (MiniGrid) There are other gridworld Gym environments out there, but this one is designed to be particularly simple

Maxime Chevalier-Boisvert 1.7k Jan 3, 2023
A StarkNet project template based on a Pythonic environment

StarkNet Project Template This is an opinionated StarkNet project template. It is based around the Python's ecosystem and best practices. tox to manag

Francesco Ceccon 5 Apr 21, 2022
A turtlebot auto controller allows robot to autonomously explore environment.

A turtlebot auto controller allows robot to autonomously explore environment.

Yuliang Zhong 1 Nov 10, 2021
DC619/DC858 Mainframe Environment/Lab

DC619 Training LPAR The file DC619 - Mainframe Overflows Hands On.pdf contains the labs and walks through how to perform them. Use docker You can use

Soldier of FORTRAN 9 Jun 27, 2022