TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
13 stars 4 forks source link

Tally: max_points -kenttä #3429

Open dezhidki opened 1 year ago

dezhidki commented 1 year ago

Jatkoa kortille #3389

Pisteryhmittelijöille (point_sum_rule) voisi olla lisäkenttä max_points, joka sisältää ryhmään kuuluvien tehtävien maksimipistemäärän. Silloin esim. JSRunnerissa voisi kysellä maksimipisteet kentällä tally:rule.max_points.

Käytännön toteutus kuitenkaan ei ole suoraviivainen, koska TIM-tehtävissä ei aina ole kiinteitä maksimipisteitä (esim. postprogrammilla voi aina antaa mielivaltaiset pisteet, ja opettaja voi ylikirjoittaa pisteytyksen). Lisäksi eri plugineissa maksimipisteet esitetään eri tavoin (esim. csPluginissa pointsRule.maxPoints ja qst:ssä maxpoints). Lisäksi maksimipisteet ovat tällä hetkellä pluginien ominaisuus, minkä takia maksimipisteiden selvittäminen vaatii pluginin markupin hakua ja lataamista.

Tähän toteutukseen on muutama vaihtoehto:

Kumpikin tapaus edellyttää melko paljon refaktorointia, ja ensimmäinen vaihtoehto voi turhaan hidastaa pisteryhmittelijät.

Tuplanolla commented 1 year ago

Onko pisteryhmittelijöiden kattamien tehtävien lukumäärää tai maksimipistemäärää vielä mahdollista laskea millään tavalla? Tämä lienee viimeinen puuttuva ominaisuus, jonka tarvitsen syksyn kurssille.

dezhidki commented 1 year ago

Moi, ei vielä ole (prioriteetiksi nousi backendin päivittäminen ajan tasalle), mutta se on minulla listalla ennen syksyä :)

Sen verran kartoitin tilanteen, että syntaksi tulee olemaan todennäköisesti muotoa

fields:
  - plugininfo:123.tallyfield.count

jolloin tallykentillä haetaan vastausten sijaan tietoja itse plugineista. Eli siis 'tally' etuliitteen sijaan käytetään 'plugininfo' ja muuten kenttäsyntaksi on sama kuin tallyn laskennassa. Siihen voi siis valmistautua, laitan tällä viikolla sinulle kokeiltavaksi 👍

dezhidki commented 1 year ago

Ominaisuus on nyt TIMissa, tässä esimerkki: https://tim.jyu.fi/view/users/dezhidki/snipetit/snip-plugininfo (katso JSRunnerin koodi sekä sivun asetukset).

Ei ole vielä dokumentaatiota, mutta syntaksi on

plugininfo:[doc_id].[group].[field]

jossa

Tuplanolla commented 11 months ago

Tällä ominaisuudella ei taida pystyä vielä tekemään taulukkoa kaikista tietyn pisteryhmittelijän tehtävien pisteistä. Hahmottelin sitä varten seuraavanlaista loitsua.

``` {#summary plugin="tableForm"}
groups:
## Funktio-ohjelmointikurssin opiskelijat saavat toimia testiaineistona.
- tiea341-2023-syksy-opiskelijat

fields:
## Haetaan sen sivun tunniste, jolla tehtävät asuvat.
## Tässä sivun nimeksi on oletettu `testi`.
{% set id = ("kurssit/tie/tiea341/2023s" ~ "/" ~ "testi") | docid %}
{% if id > 0 %}
## Haetaan sen pisteryhmittelijän tunniste, johon tehtävät kuuluvat.
## Tässä pisteryhmittelijän nimeksi on oletettu `laaja`.
## Suodatinta `slurp` ei ole vielä olemassa.
{% set exercise_names = (id ~ ".laaja") | slurp %}
{% for exercise_name in exercise_names %}
## Haetaan yksi pisteryhmittelijän tehtävä, ja
## annetaa sille lyhyt nimi, joka perustuu uniikkiin tehtävän nimeen.
- %% id %%.laaja.%% exercise_name %%.points=%% exercise_name %%
{% endfor %}
{% endif %}
## Edellisen silmukan voisi odottaa tuottavan seuraavanlaisen tuloksen,
## joka näkyisi taulukossa yhtenä rivinä tehtävää kohti.
# - 500000.exercise_1_1.points=exercise_1_1
# - 500000.exercise_1_2.points=exercise_1_2
# - 500000.exercise_1_4.points=exercise_1_4
## Hieman yleistämällä tällä saataisiin myös kooste
## kaikista kurssin tehtävien pisteistä.
```
dezhidki commented 11 months ago

Joo, tämän kortin nimi viittasikin max_points-kenttään.

Sellainen on tosiaankin, että tällä hetkellä voi hakea tehtävien lukumäärän:

https://github.com/TIM-JYU/TIM/issues/3429#issuecomment-1683403904

Mutta täydellistä max_points -laskua ei vielä ole. Jätän tämän kortin auki ja muutan tagia.

ajlakanen commented 11 months ago

Kommentoidaan nyt vielä tännekin, että max_points-tiedon näyttäminen olisi hyödyllinen työkalu myös valintakokeiden laatijoille.

Omasta mielestäni on ihan OK määritellä max_points-ominaisuus siten, että se ei ota huomioon postProgram-säätöjä ja opettajan ylikirjoittamia pisteitä. Tosin olisi mielestäni kohteliasta näyttää Teacher-näkymässä ilmoitus tilanteessa, jossa opettaja tallentaa pisteeksi arvon, joka on suurempi kuin (esim. csPluginin) maxPoints.

(Miten muuten tuo nimeäminen menee, pitäisikö olla maxPoints vai max_points?)

Tuplanolla commented 11 months ago

Haikailin edellisessä kommentissa myös jotain mekanismia, jolla voisi iteroida pisteryhmittelijöiden kattamien tehtävien yli. Tällöin laskettavan asian voisi päättää itse.