Git Product home page Git Product logo

pinax-lms-activities's Introduction

Pinax LMS Activities

CircleCi Codecov

Table of Contents

About Pinax

Pinax is an open-source platform built on the Django Web Framework. It is an ecosystem of reusable Django apps, themes, and starter project templates. This collection can be found at http://pinaxproject.com.

pinax-lms-activities

pinax-lms-activities provides a framework and base learning activities for Pinax LMS. It is a framework for building interactive activities like quizzes, etc. to use in courses for example.

Overview

At the moment, pinax-lms-activities provides both a collection of abstract base classes for building learning activities and a core app for managing retrieval of activities and per user activity state.

The abstract activities subclass each other. For example a TwoChoiceQuiz is a type of quiz where a question is asked and the student has to pick between one of two possible answers provided (the correct answer and a distractor). TwoChoiceQuiz is abstract because it doesn't provide the actual questions, a subclass needs to do that. TwoChoiceQuiz itself subclasses Quiz which subclasses Activity. Activity is the top-level base class for all activities.

When developing a concrete activity there are a number of different facets to consider:

  • (a) what’s the question / answer mechanic (e.g. two-choice quiz)
  • (b) what’s the algorithm for choosing what to ask / generating questions (random? based on what user has seen? or what they found difficult? or based on their "level"?)
  • (c) what are the exit criteria for a session ending (do they just get asked 10 questions, is it based on X correct in a row or is it completely open ended)
  • (d) what data needs to be stored about a session for scoring / analytics and/or feeding back into (b)

Currently the abstract base activities are really just addressing (a) and the individual concrete activities have to do (b) and (c). There really isn’t much (d) at all yet.

But we want to get there on all these facets.

Supported Django and Python versions

Django \ Python 2.7 3.4 3.5 3.6
1.11 * * * *
2.0 * * *

Documentation

Installation

To install pinax-lms-activities:

    $ pip install pinax-lms-activities

Add pinax.lms.activities to your INSTALLED_APPS setting:

    INSTALLED_APPS = [
        # other apps
        "pinax.lms.activities",
    ]

Lastly add pinax.lms.activities.urls to your project urlpatterns:

    urlpatterns = [
        # other urls
        url(r"^activities/", include("pinax.lms.activities.urls")),
    ]

Change Log

0.18.0

0.1

  • initial release

Contribute

For an overview on how contributing to Pinax works read this blog post and watch the included video, or read our How to Contribute section. For concrete contribution ideas, please see our Ways to Contribute/What We Need Help With section.

In case of any questions we recommend you join our Pinax Slack team and ping us there instead of creating an issue on GitHub. Creating issues on GitHub is of course also valid but we are usually able to help you faster if you ping us in Slack.

We also highly recommend reading our blog post on Open Source and Self-Care.

Code of Conduct

In order to foster a kind, inclusive, and harassment-free community, the Pinax Project has a code of conduct. We ask you to treat everyone as a smart human programmer that shares an interest in Python, Django, and Pinax with you.

Connect with Pinax

For updates and news regarding the Pinax Project, please follow us on Twitter @pinaxproject and check out our Pinax Project blog.

License

Copyright (c) 2012-2018 James Tauber and contributors under the MIT license.

pinax-lms-activities's People

Contributors

brosner avatar jtauber avatar paltman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pinax-lms-activities's Issues

add a cloze test activity type

A Cloze Test is a "fill in the blank" style test.

An example of this would be having the content be some bit of a text (e.g. Emancipation Proclamation), and the user is presented with parts of the text blanked out that they have to fill in.

Questions:

  1. Should the words that are blanked out be randomized? Or specified by the implementor?
  2. Should there be varying levels of difficultly by the number of blanks, a word bank, etc?

Document platform basics

From an unpublished blog post on learning-greek:

At its core, this site is just a collection of activities.

Activities are pluggable modules that, currently, are independent from one another. The base of this site is a platform for running these activities.

Some activities are one-offs—you do the activity and then you're done with it and it can't be run again.

Other activities are repeatable—you can do the activity over and over again as many times as you like.

At the moment, the only thing other than repeatability that determines whether a user can do an activity is the user's adoption level compared with how many other people have already done that activity.

Because I want to roll out lots of activities, some experimental, there will likely be occasional problems that don't surface until a few people have tried the activity. For this reason, I let users set an "adoption level" which states their tolerance to new, un-tested activities. By default, users have an adoption level of "early adopter". This means they will get access to an activity once ten other people have tried the activity. They can change their adoption level to "bleeding edge" to get immediate access to activities as soon as I deploy them. For people that really want to wait until an activity is tried and true, they can set their adoption level to "maintream" and wait until 100 people have tried the activity before it is available to them.

In a follow-up post, I'll dive into the different types of activities that have been implemented so far.

Visually indicate different activity types

(copied from jtauber/learning-greek#2)

It might be worthwhile distinguishing different activity types such as a one off survey from a repeatable quiz. There are other dimensions to consider, though, such as the Likert-scale familiarity activities versus two-choice activities or the alphabet versus nouns.

I was considering using different background colors to indicate this (think Khan academy subject areas) but not sure which dimension(s) to capture.

The core should probably just support individual activities picking their category (so the activity authors determine the dimensions of classification) and this category then controls styling via CSS class.

enable content and activity to (optionally) be orthogonal

What if we want to make the content and the quiz mechanism orthogonal; e.g. use the same vocab items but test them different ways, using different activities.

It’s a very strong argument for the core providing an API for content rather than each activity being responsible for it (in this use case)

Implement a 2x2 matching quiz

(copied from jtauber/learning-greek#8)

Shown two questions and two answers, you have to match the right answer with the right question.

Has nice feature that you can introduce new material by combine the unknown question/answer pair with one that is known.

Could be extended to more than two as well.

Trigger availability of some activities based on rules

(copied from jtauber/learning-greek#4)

Currently, the only thing triggering availability of an activity is the adoption-level / number-of-people-who've-already-done-it combo.

It would be nice if there were other rules for when an activity is available. Perhaps an activity is only available once another has been completed. Or done N times. Or based on the result of a survey question. Or when a particular ability with a concept is established.

The core should probably support all of these.

Multiple choice quizzes based on confusion

(copied from jtauber/learning-greek#7)

At present, the Two Choice quizzes all have a wrong choice that is entirely randomly chosen (the only constraint being it's not the same as the correct answer).

It would be better to choose the wrong choice (or wrong choices in the case of polychotomous quizzes) based on likely confusions. The could be based on global confusion or it could be a bayesian average.

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.