Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AMC-TXT like MCQ in lib of PL #155

Closed
nborie opened this issue Jan 16, 2019 · 3 comments
Closed

AMC-TXT like MCQ in lib of PL #155

nborie opened this issue Jan 16, 2019 · 3 comments
Assignees
Labels
Enhancement New feature or request Question Further information is requested

Comments

@nborie
Copy link
Collaborator

nborie commented Jan 16, 2019

The goal of this issue is to decide a common design for MCQ in PL. This design could provide some high-level and non specific functionalities.

DEPENDS ON #130

Syntax

The file containing the question should be of extension .txt (technically PL do not care, it is just a good convention). Here is small example :

* Can you answer this question ?
- No, I can not. Arf, did I do it ?
+ Yes.
+ Perhaps... Hmm, yes, I did it.

For short, question begin by a star *, bad answers begin by a minus -, and good propositions begin by a plus +. Here is a longer example : https://github.com/nborie/OSbank/blob/master/exercises/MCQ/generalities/questions.py

This syntax come from Auto-Multiple Choice (AMC) syntax which is very well know for auto-correction (by scan and read) of Multi Choice Question. The AMC-TXT syntax is full described at https://www.auto-multiple-choice.net/auto-multiple-choice.en/AMC-TXT.shtml

AMC-TXT syntax support markdown between bracket [blod], latex $\frac{y}{x} = z$, image insertion ![URL or path](alternative description an legend) and more...

Inside PL

Here is an example of utilization. This exercise will build a MCQ containing 5 different questions out of all available in the file questions.txt. Several options will be selected randomly. At least, if possible, 4 different options are selected. At most, if possible, 8 different propositions will be displayed for the question.

# Copyright 2019 Nicolas Borie <nicolas.borie@u-pem.fr>
author=Nicolas Borie

title=Généralités sur les systèmes d'exploitation
tag=system|hardware

template=/templates/parametrized_MCQ.pl

@ /exercises/MCQ/generalities/questions.txt
data_from_file=questions.txt

number_question=5
min_option=4
max_option=8

Functionalities

At least, AMC-TXT parametrized MCQ could :

  • Select randomly combination of questions (k out of n without repetition...)
  • Select randomly combination of proposition in each question (k out of n without repetition...)
  • Customize grading with {-2} or {+3} decorating some proposition (syntax defined in AMC-TXT doc)
  • Use several source files as sets of question with an integer specifying how many question should be selected randomly inside.
  • Use default value for all parameters

Parameter

At least, one of the two following MUST BE defined :

data_from_file=file_path # NO DEFAULT
data_from_files== #NO DEFAULT
{
  "file_path_1" : 3;
  "file_path_2" : 5;
  "file_path_3" : 2;
}
==

number_question=integer # choice integer different questions
DEFAULT --> all questions inside the file if there is not specified

min_option=4 # use at least 4 different propositions (less if there are less proposition available)
DEFAULT --> all possible answers

max_option=8 # use at most 8 different propositions (less if there are less proposition available)
DEFAULT --> all possible answers

min_good_answer=1 # among the proposition, at least one is a good one...
DEFAULT --> all displayed randomly answer could be all false (student must select nothing possibly)

min_bad_answer=1 # among the proposition, at least one is a bad one...
DEFAULT --> all displayed answer could be true (student must select everything in the question)

AMC-TXT question begin by single * or double **, double stars means several answer are good. if teacher specify so, a message will be displayed to the student. If there is no double star **, PL will still work even several answer are good but the multi-answer warning will not be displayed.

This text will be probably used as a draft documentation...

Anyway, please comment if you want to comment it. In particular :

  • Are you agree with the fact that AMC-TXT seems to be a good format (human readable, not specialist format, ...) ?
  • Do you think that any teacher teaching any course could use it ? In particular a teacher not specialist in computer sciences ?
  • Are you agree with the proposed functionalities ?
  • Do you want more ?
  • Are you agree with the default behavior and the default value of parameters ?
  • Any suggestion ?
@nborie nborie added Enhancement New feature or request Question Further information is requested labels Jan 16, 2019
@nborie nborie self-assigned this Jan 16, 2019
@plgitlogin
Copy link
Collaborator

You make this dependant on #130 it could be done on the sheet (pltp) level.

@nborie
Copy link
Collaborator Author

nborie commented Jan 16, 2019

True...

Anyway, since the navigation panel of pltp is huge, since I would prefer something light (single URL, single page, etc...), since when you want to fix a maximum time, you want to set it for the whole MCQ, I currently think that the result will be better if it is done in a single pl exercise...

An MCQ is something that should be done very fastly (less than 1 min per question generally...). Could you provide more arguments to set it in pltp instead of a single exercise ?

The pltp approach will make me avoid a lot of technical problem (like #130).

On the other side, does a pltp has a builder ? Because to select 5 different question out of 10, I begin ny building a subet of {0, 1, 2, 3, ..., 9} of size 5, then I mix it on place with Knut mixing algorithm. This should be ABSOLUTELY done at the pltp level and not during the builders of pl subpart.

I did implement several builder/grader for exercise but I never did so at a pltp level....

@plgitlogin
Copy link
Collaborator

i love the
"On the other side, does a pltp has a builder ? "
Question !
Of course, this is the idea behind the Activity.

A pltp is a dictionnary python with references to exercices.
A pltp chould have a "builder" variable called in the start method of the pltp activity, this start method could change the list of exercices of the pltp, could add decorators and set values on those exerices.

The navigation panel could be killed by the builder.
This is something to discus in another proposition: #162 where the page structure is defined as a variable in the pl.

The syntaxe could be like the one we use on PL exercices.
This is something to discus in a different issue: #161.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or request Question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants