Code Monkey home page Code Monkey logo

problem-builder's Introduction

Problem Builder and Step Builder

Circle CI

This repository provides two XBlocks: Problem Builder and Step Builder.

Both blocks allow to create questions of various types. They can be used to simulate the workflow of real-life mentoring, within an edX course.

Supported features include:

  • Free-form answers (textarea) which can be shared accross different XBlock instances (for example, to allow a student to review and edit an answer they gave before).
  • Self-assessment MCQs (multiple choice questions), to display predetermined feedback to a student based on his choices in the self-assessment. Supports rating scales and arbitrary answers.
  • MRQs (Multiple Response Questions), a type of multiple choice question that allows the student to select more than one choice.
  • Answer recaps that display a read-only summary of a user's answer to a free-form question asked earlier in the course.
  • Progression tracking, to require that the student has completed a particular step before allowing them to complete the next step. Provides a link to the next step to the student.
  • Tables, which allow to present answers from the student to free-form answers in a concise way. Supports custom headers.
  • Dashboards, for displaying a summary of the student's answers to multiple choice questions. Details

The following screenshot shows an example of a Problem Builder block containing a free-form question, two MCQs and one MRQ:

Problem Builder Example

Installation

Install the requirements into the Python virtual environment of your edx-platform installation by running the following command from the root folder:

$ pip install -r requirements.txt

Usage

See Usage Instructions

Workbench installation and settings

Install to the workbench's virtualenv by running the following command from the problem builder repo root:

pip install -r requirements.txt

In the main XBlock repository, create the following configuration file in workbench/settings_pb.py in the XBlock repository:

from settings import *

INSTALLED_APPS += ('problem_builder',)
DATABASES['default']['NAME'] = 'workbench.sqlite'

Because this XBlock uses a Django model, you need to sync the database before starting the workbench. Run this from the XBlock repository root:

$ ./manage.py syncdb --settings=workbench.settings_pb

Running the workbench

$ ./manage.py runserver 8000 --settings=workbench.settings_pb

Access it at http://localhost:8000/.

Running tests

First, make sure the XBlock SDK (Workbench) is installed in the same virtual environment as xblock-problem-builder.

From the xblock-problem-builder repository root, run the tests with the following command:

$ ./run_tests.py

If you want to run only the integration or the unit tests, append the directory to the command. You can also run separate modules in this manner.

$ ./run_tests.py problem_builder/tests/unit

Extracting Translatable Strings

To extract/update strings for translation, you will need i18n_tools:

pip install git+https://github.com/edx/i18n-tools.git#egg=i18n_tools

To extract strings, use i18n_tool extract. To build a dummy translation for testing, use:

i18n_tool dummy && i18n_tool generate

Adding custom scenarios to the workbench

Within the xblock-problem-builder repository, create the templates/xml and add XML scenarios to it - all files with the *.xml extension will be automatically loaded by the workbench:

$ mkdir templates/xml
$ cat > templates/xml/my_pb_scenario.xml

Restart the workbench to take the new scenarios into account.

Upgrading from Version 1

To upgrade a course from xblock-mentoring ("v1") to xblock-problem-builder ("v2"), run the following command on a system with edx-platform, xblock-mentoring, and xblock-problem-builder installed:

$ SERVICE_VARIANT=cms DJANGO_SETTINGS_MODULE="cms.envs.devstack" python -m problem_builder.v1.upgrade "Org/Course/Run"

Where "Org/Course/Run" is replaced with the ID of the course to upgrade.

Open edX Installation

Problem Builder releases are tagged with a version number, e.g. v2.6.0, v2.6.5. We recommend installing the most recently tagged version, with the exception of the following compatibility issues:

  • edx-platform version open-release/eucalyptus.2 and earlier must use โ‰คv2.6.0. See PR 128 for details.
  • edx-platform version named-release/dogwood.3 must use v2.0.0.
  • Otherwise, consult the edx-platform/requirements/edx/edx-private.txt file to see which revision was used by edx.org for your branch.

The edx-platform master branch will generally always be compatible with the most recent Problem Builder tag. See edx-private.txt for the version currently installed on edx.org.

To install Problem Builder on an Open edX installation, choose the tag you wish to install, and run:

$ sudo -u edxapp -Hs
edxapp $ cd ~
edxapp $ source edxapp_env
edxapp $ TAG='v2.6.5'  # example revision
edxapp $ pip install "git+https://github.com/open-craft/problem-builder.git@$TAG#egg=xblock-problem-builder==$TAG"
edxapp $ cd edx-platform
edxapp $ ./manage.py lms migrate --settings=aws  # or openstack, as appropriate

Then, restart the edxapp services:

$ sudo /edx/bin/supervisorctl restart edxapp:
$ sudo /edx/bin/supervisorctl restart edxapp_workers:

See Usage Instructions for how to enable in Studio.

License

This XBlock is available under the GNU Affero General Public License (AGPLv3).

problem-builder's People

Contributors

antoviaque avatar bradenmacdonald avatar itsjeyd avatar dragonfi avatar kelketek avatar mtyaka avatar e-kolpakov avatar pomegranited avatar smarnach avatar filosottile avatar aboudreault avatar jbzdak avatar omarkhan avatar atlaspilotpuppy avatar dino-cikatic avatar replaceafill avatar mhaton avatar ziafazal avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.