COM CREAR PROBLEMES


En aquest apartat s'explica com crear nous problemes de programació, cal estar enregistrat a l'aplicació com a professor per tal de poder donar d'alta nous problemes.

Clonar un problema

La forma més fàcil de crear un problema és clonar-ne un d'existent, d'aquesta manera es copien totes les dades i només cal modificar-les (a més, les dades antigues serveixen de plantilla i ajuden a modificar el problema):

  1. Alguns problemes ja tenen categoria, s'aconsella clonar-ne un de la mateixa categoria en cas que estigui disponible:

  2. Un cop escollit el problema, es fa clic al seu nom i al panell de la dreta apareix l'opció de "clonar":

  3. El primer que es demana és un codi, que es pot canviar més endavant (serà la URL del problema). Només es poden posar números i lletres minúscules:

Editar el problema:

Ara es pot modificar la informació, tots els camps tenen una explicació, però es fa un repàs d'aquells que cal (o es recomana) modificar:

  1. El codi i el nom, el primer es pot modificar si el provisional no agrada, el segon serà el que es veurà a la llista de problemes:

  2. El camp de visibilitat és molt important, si no és visible els alumnes no hi poden accedir. És més, els problemes que pertanyen a exàmens no són públics, els alumnes hi poden accedir des de dins un examen (contest) però no des de la part pública de problemes. No s'ha de fer públic un problema fins al final del procés, quan s'ha comprovat que funciona correctament, i mai s'ha de fer públic si es vol que formi part d'un examen:

  3. Cal modificar la data de publicació manualment, es recomana actualitzar-la prement els botons "avui" i "ara":

  4. Creadors i conservadors, el primer determina l'autoria del problema mentre que el segon dona accés a altres usuaris perquè el puguin mantenir (editar-lo si hi apareixen errors, etc.). Cal afegir a tots els professors de programació com a conservadors per a facilitar-ne la tasca de manteniment del DMOJ (dins aquest exemple hi falten professors, tan bon punt feu login al DMOJ us afegiré com a conservadors dels exercicis, ja que no deixa aplicar grups):

  5. La part més crítica del problema és l'enunciat, en clonar un problema existent es pot fer servir el contingut com a plantilla perquè tots els exercicis tinguin el mateix format (es fa servir markdown per al format). Es important marcar la casella 'include test cases' si es vol que les proves s'afegeixin a l'enunciat de forma automàtica (recomenat per a evitar discrepàncies entre els fitxers de proves i l'enunciat):

  6. Finalment es pot escollir atribuir l'autoria del problema i escollir la llicència (es poden afegir de noves si cal, però es recomana mantenir la CC BY-NC-SA):

  7. El tipus de problema serveix per a definir característiques del problema (es poden crear de noves si cal):


    Aquesta informació la pot veure l'usuari dins el problema:


    També és important marcar el grup correcte (es poden crear de nous si cal):


    Es mostra al llistat de problemes:
    I permet filtrar:

  8. No cal preocupar-se de la part dels punts, ja que es defineix dins dels exàmens (contest) i no es té en compte per als problemes generals, però podria ser d'utilitat en un futur (els estudiants guanyaran aquests punts si resolen l'exercici):


  9. Es recomana no modificar el temps i la memòria dedicada, haurien de ser suficients per a tots els problemes:


  10. En un futur es podrien permetre més llenguatges, el sistema ja està preparat, però de moment es recomana mantenir només Java:

  11. No es considera rellevant comentar la resta de camps i es recomana mantenir-los sense modificar.

  12. Finalment, es guarda el problema, es recomana de "desar i continuar editant" perquè facilita el següent pas:

Establir els jocs de proves:

  1. Primer cal obrir el problema al lloc web, igual que el veurà un alumne:

  2. Un cop a dins, el panell de la dreta permet administrar els casos de prova (òbviament, aquestes opcions no les tenen disponibles els alumnes):

  3. Cal preparar un fitxer ZIP amb els casos de prova, que consisteixen en fitxers d'entrada (el que llegirà el programa) i fitxers de sortida (que hauria d'escriure el programa en funció de l'entrada anterior). L'estructura ha de ser codiproblema.x.in i codiproblema.x.out. On "x" és el "tes case". Per exemple:


    Exemple del contingut d'un fitxer d'entrada (important: afegir sal de línia al final):

    Exemple del contingut d'un fitxer sortida:

  4. Després es genera un ZIP que contingui a dins aquests fitxers:

  5. I ara ja es pot carregar aquest fitxer al DMOJ, cal escollir-lo primer i després prémer "envia!":
    Dins aquesta secció apareixen opcions rellevants:

    1. El fitxer ZIP a escollir.
    2. Escollint "si" es permet la càrrega automàtica de les proves (altrament cal crear entrades manualment).
    3. Es recomana permetre 'unicode' pels caràcters no anglosaxos (ç, ç, accents, etc.).
    4. La longitud del prefix predeterminada és zero, establint un prefix es permet que l'alumne rebi feedback de la seva sortida.
    5. El botó per guardar.
  6. Un cop carregat el fitxer, es poden modificar les entrades a voluntat:

  7. Sobre els punts, interessa que els exercicis només puntuïn si superant tots els jocs de proves, és a dir, no atorgar puntuacions parcials. Per a aconseguir aquest comportament, es puntua a zero punts tots els casos tret de l'últim, que es puntua amb un punt, finalment es prem "envia!" de nou:

Provar el problema:

El problema està llest per a provar-lo.

  1. Es torna a l'enunciat del problema clicant sobre el nom del problema:

  2. Ara es fa clic al botó d'"enviar solució" (aquesta opció si la poden veure els alumnes):

  3. S'emplena el codi font i es prem el botó "envia!":

  4. Finalment apareix el resultat:

    Si tot és correcte, l'exercici s'ha pujat correctament; altrament, si falla alguna cosa, cal revisar la solució proposada o els jocs de proves.

Publicar el problema o afegir-lo a un examen:

Si s'han superat totes les proves, cal fer un últim pas.

  1. Si l'exercici ha de ser públic, és a dir, l'han de resoldre els estudiants com a part del seu entrenament, aleshores cal editar el problema i marcar-lo com a públic:
    1.1. Es torna al problema:

    1.2. S'escull l'opció d'editar:

    1.3. Es marca l'opció de visibilitat:


    1.4. I es guarden els canvis:

  2. Si l'exercici forma part d'un examen i no l'han de veure els alumnes fins que no sigui el moment, aleshores cal afegir-lo a un "contest" o "concurs":
    2.1. Cal accedir primer a la secció de concursos:

    2.2. Es pot crear un nou concurs o afegir el problema a un concurs existent (els punts no poden ser decimals, per això es recomana deixar-ho a 10 punts):


    La resta de camps d'un concurs es recomana deixar-los tal com es pot observar al concurs anomenat "Examen Parcial (Condicionals) - ASIX1 2022/2023", és un exemple prou autoexplicatiu perquè molts camps són molt similars als dels problemes.