GithubHelp home page GithubHelp logo

stefankoegel / moodle-mod_groupdistribution Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 1.0 302 KB

This repository is no longer actively maintained. You can find its successor here: https://github.com/learnweb/moodle-mod_ratingallocate

PHP 96.95% JavaScript 1.36% CSS 1.69%

moodle-mod_groupdistribution's Introduction

⚠️ Status ⚠️

This repository is no longer actively maintained. You can find its successor here: https://github.com/learnweb/moodle-mod_ratingallocate

moodle-mod_groupdistribution

A Moodle module which simplifies the distribution of students into groups that are constrained by a maximum number of members. A teacher can set a time period during which students can give ratings for groups. After the period an algorithm tries to distribute the students into the groups according to their ratings. This gives all students an equal chance to enter their preferred group instead of other distribution algorithms like first-come, first-served.

Requirements

This plugin requires Moodle 2.5.4+

Changes

2014-01-31 - Initial version (Release candidate)

Installation

Install the plugin like any other plugin to folder /mod/groupdistribution

See http://docs.moodle.org/25/en/Installing_plugins for details on installing Moodle plugins

Settings

The groupdistribution module has three settings which can be set on the plugin's settings page:

  1. You can choose if the teachers can see a student's name next to his/her rating in the ratings table.

  2. You can set a default maximum size for groups.

Usage

Teachers

Teachers can set the time period during which students can give their rating and the individual groups' maximum size on the activity's settings page. It is also possible to make a group invisible to the distribution algorithm and students, so that the distribution algorithm will skip it.

When a student rates the groups, he can see the groups' names, pictures and descriptions. If a group represents a periodic event (for example a weekly tutorial), its description can be used to tell the students about when and where the event will take place. The groupdistribution settings page makes it easy to change groups description.

When installing mod_groupdistribution, it creates a capability mod/groupdistribution:group_teacher. There is no default role associated with this capability. When a person with this capability is in a group, the person's name and picture will be shown alongside the group to the students during the rating period. This can be used to represent the tutor of the group.

After the rating period is over, a teacher can start the distribution process and view some additional data about the distribution. It is always possible to change maximum group sizes and redo the distribution, if the outcome was not desirable. Group memberships can of course be changed manually afterwards via the standard Moodle tools.

The algorithm is fair and will always find the solution with the fewest students without a group and the best average rating. Unfortunately, this may take some time.

Students

The groupdistribution activity informs students about changes to the rating period and rateable groups. These changes are shown on the student's course overview block and the course's recent activity block.

When a student wants to rate his groups, he/she is presented with a list containing the group names, their descriptions, possibly the names of the groups' teachers, and a menu from which the student can choose a rating. The student has to give at least two ratings better than 'impossible'. A student will never be distributed into a group with the rating 'impossible'.

Timelimit

The distribution algorithm might run for several seconds or minutes, depending on the number of enrolled students and groups. The algorithm tries to increase the standard PHP time limit at runtime with the set_time_limit(0) call like other parts of Moodle code do.

Depending on your local PHP settings it is possible that PHP will ignore this function call and the algorithm will be stopped before it has finished. If this happens, please check your local PHP configuration and refer to http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time and http://www.php.net/manual/en/function.set-time-limit.php.

Themes

mod_groupselection should work with all themes from moodle core.

Further information

Report a bug or suggest an improvement: https://github.com/moodleuulm/moodle-mod_groupselection/issues

Moodle release support

Due to limited ressources, mod_groupselection is only maintained for the most recent major release of Moodle. However, previous versions of this plugin which work in legacy major releases of Moodle are still available as-is without any further updates in the Moodle Plugins repository.

There may be several weeks after a new major release of Moodle has been published until I can do a compatibility check and fix problems if necessary. If you encounter problems with a new major release of Moodle - or can confirm that mod_groupselection still works with a new major relase - please let me know on https://github.com/moodleuulm/moodle-mod_groupselection/issues

Right-to-left support

This plugin has not been tested with Moodle's support for right-to-left (RTL) languages. If you want to use this plugin with a RTL language and it doesn't work as-is, you are free to send me a pull request on github with modifications.

Algorithm

This module uses a modified Ford-Fulkerson algorithm to solve the so called minimum-cost flow problem. To find augmenting paths a modified Bellman-Ford algorithm is used.

The algorithm has a worst case time complexity of O(n^4) where n is the number of students. That means it might take some time to find a solution. Some experience values: 30 seconds for 100 students 2 minutes for 400 students

Copyright

Written by Stefan Koegel, University of Ulm Packaged and maintained by Alexander Bias, University of Ulm

moodle-mod_groupdistribution's People

Contributors

abias avatar stefankoegel avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

kralo

moodle-mod_groupdistribution's Issues

Show group in course overview

Wenn die zugeteilte Gruppe dann nach der Verteilung in der Aktivität angezeigt wird, würde ich es begrüßen, wenn die Gruppe gleichzeitig gleich auf der Kursübersicht im Rahmen der Aktivitätsbeschreibung angezeigt werden könnte.

Show group description before rating period

Wäre es möglich, dass die Liste der Gruppen auch angezeigt wird, wenn die Bewertungsperiode noch nicht begonnen hat bzw. schon 'rum ist. Im Prinzip sollte alles so aussehen, wie es aussieht, wenn die Bewertungsperiode aktiv ist, nur ohne die Bewertungsdropdownlisten.

Show group after distribution

Der Student hat nach Bewertungsende keine Möglichkeit zu sehen, in welcher Gruppe er denn überhaupt gelandet ist.

Improve rating description (0-5)

Skala von textuellen Eingaben ändern auf Zahlenwerte von 0-5, so dass man dann in einer Legende erklären kann, welcher Wert für was steht.

Special treatment for unix time 0

Du hast in der Kursübersicht auf der Startseite ja Kursnews realisiert, die angezeigt werden, wenn sich etwas beachtenswertes in der Gruppenverteilung ändert. Bei der allerersten Anzeige dieser Meldung kann es aber sein, dass als Timestamp der Start der Unixzeit übergeben wird, sodass der String "Seit Donnerstag, 1. Januar 1970, 01:00, gab es folgende Änderungen“... erscheint.

Deprecation Warning in Moodle 2.9

Hi Stefan,

when using your plugin with Moodle 2.9, there are the following deprecation warnings:

Function moodleform_mod::add_intro_editor() is deprecated, use moodleform_mod::standard_intro_elements() instead.
• line 710 of /course/moodleform_mod.php: call to debugging()
• line 82 of /mod/groupdistribution/mod_form.php: call to moodleform_mod->add_intro_editor()
• line 195 of /lib/formslib.php: call to mod_groupdistribution_mod_form->definition()
• line 86 of /course/moodleform_mod.php: call to moodleform->moodleform()
• line 255 of /course/modedit.php: call to moodleform_mod->moodleform_mod()

add_to_log() has been deprecated, please rewrite your code to the new events API
• line 142 of /lib/deprecatedlib.php: call to debugging()
• line 94 of /mod/groupdistribution/lib.php: call to add_to_log()
• line 121 of /course/modlib.php: call to groupdistribution_add_instance()
• line 275 of /course/modedit.php: call to add_moduleinfo()

Kind regards,
Kathrin

Show free spaces in groups

Es wäre auch cool, wenn die Anzahl der freien (bzw. zuteilbaren) Plätze in der Übersicht angezeigt werden könnte.

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.