Spletna storitev za generiranje nalog

ul-fmf, updated 🕥 2023-03-19 15:06:52

Nadlogar

Nadlogar je spletna storitev za generiranje naključnih nalog ter njihovih rešitev. Učitelj izbere seznam tipskih nalog in vzorčno izhodno datoteko ter naloži seznam učencev, storitev pa za vsakega učenca ustvari posamezne datoteke z nalogami ter skupno datoteko z rešitvami. Naloge niso čisto naključne, saj storitev za istega učenca vedno vrne enako nalogo, kar omogoča, da naloge naknadno popravljate, ne da bi se vam pri tem v celoti spremenile.

Nadlogar je projekt, ki nastaja v okviru programerskega kluba Fakultete za matematiko in fiziko, Univerza v Ljubljani. Poleg vseh članov kluba, ki k razvoju prispevajo vse od idej do kode, so k razvoju bistveno pomagali oziroma še pomagajo:

  • Gregor Šega, ki je napisal prvo skripto za generiranje nalog v Mathematici in s tem dal idejo za splošen program,
  • Matija Pretnar, ki je na osnovi te skripte v Mathematici napisal splošen program,
  • Urša Pertot, ki je na osnovi tega programa napisala program v Pythonu,
  • podjetje EBA d.o.o., Ljubljana, ki je velikodušno prevzelo sponzorstvo programerskega kluba.

Navodila za namestitev

Na začetku klonirajte repozitorij ter ustvarite virtualno okolje:

git clone [email protected]:ul-fmf/nadlogar.git
cd nadlogar
python3 -m venv venv

Dobiti bi morali sledečo strukturo datotek:

nadlogar/
    nadlogar/
        config/
        documents/
        ...
        manage.py
    ...
    venv/
        ...

Po prvi namestitvi, pa tudi na vsake toliko časa, greste v mapo nadlogar/nadlogar/ ter s sledečimi ukazi kodo posodobite, aktivirate virtualno okolje, namestite potrebne pakete in posodobite bazo:

git pull
source venv/bin/activate
pip install -r requirements/local.txt
python manage.py migrate

Če uporabljate Windowse, je drugi ukaz drugačen

git pull
venv\Scripts\activate
pip install -r requirements\local.txt
python manage.py migrate

Strežnik nato poženete z

python manage.py runserver

Teste poženete z

python manage.py test

Po namestitvi je koristno pognati

python manage.py loaddata documents/fixtures/initial.json

Tako naložite nekaj koristnih LaTeX predlog.

Kako poženete Nadlogarja?

Če poženete ukaz

python manage.py runserver

vam na lokalnem strežniku požene spletno stran. Vendar se morate za njeno uporabo najprej prijaviti. Zato ustvarite adminskega uporabnika, kar storite z ukazom

python manage.py createsuperuser

Ko to storite, vam je dostopen tudi adminski vmesnik, kjer med drugim lahko dodajate nova besedila nalog (vsaj zaenkrat, saj se bo shranjevanje besedil kmalu spremenilo).

Za navodila glede dodajanja funkcionalnosti in popravljanja napak glejte CONTRIBUTING.md.

Issues

Zaporedja

opened on 2023-03-19 10:47:25 by NotNotLuka

Dodana dva tipa nalog pri zaporedjih

Tretji in četrti tip v issue #39

Kvadratne in linearne funkcije

opened on 2022-12-28 10:30:33 by zigakmecl

Dodal naloge s kvadratnimi in linearnimi funkcijami. Risanje grafov ne deluje.

Več identičnih podnalog

opened on 2022-12-01 18:09:46 by MightyOwler

Trenutno se lahko zgodi, da so nekatere podnaloge med seboj identične. Sklepam, da je to posledica uporabe sympy.simplify(), mogoče pa bi bilo, da se problem pojavi že pri generiranju podnalog.

Konsistenten stil obstoječih nalog

opened on 2022-11-25 20:54:44 by MightyOwler
  • [ ] uporabi smiselna imena spremenljivk v generatorjih
  • [ ] konsistentno napiši help_text v parametrih
  • [ ] uporabljene konvencije zapiši v CONTRIBUTING.md

Trenutno se v razredih, ki definirajo posamezne probleme, nahaja ogromno spremenljivk, katerih pomen ni takoj jasen. Pri tem so še najbolj moteča enočrkovna imena.

Predlagam, da se ta imena pregleda in smiselno popravi.

Dokumentacija generične kode

opened on 2022-11-22 11:25:00 by matijapretnar

Closes #16

Besedila za več kot en problem

opened on 2022-11-17 12:45:14 by matijapretnar

(To je še ena stvar, o kateri smo se pogovarjali na programerskem klubu v okviru #71)

Vsaka naloga ima lahko več podnalog, ki so vse generirane z istim generatorjem. Na primer, lahko imamo eno samo nalogo

Najdi ničle polinoma x^2

ali pa nalogo z več podnalogami

Najdi ničle naslednjih polinomov: x^2, x^2 - 1, x + 2

Trenutno imamo samo eno besedilo in pogojni stavek v predlogi dokumenta, npr. {% if texts|length > 1 %} v https://github.com/ul-fmf/nadlogar/blob/f9a805b0e69f547b5835bc452a02e9a61b472a24/nadlogar/documents/fixtures/initial.json#L7 To ni optimalno, ker tudi sproducira nekaj v stilu

  • Najdi ničle polinoma x^2
  • Najdi ničle polinoma x^2 - 1
  • Najdi ničle polinoma x^2 + 2

Ideja je, da se da imeti dve vrsti besedil, enega za ednino in enega za množino, ki ima glavo, ponavljajoči se del ter morebitni rep. Verjetno je za narediti dva podrazreda SingularProblemText in MultipleProblemText ali kaj takega. Mnenja?

Fakulteta za matematiko in fiziko, Univerza v Ljubljani
GitHub Repository Homepage