Exam Grading System =================== The grading system is absolutely transparent, *the tests that are used to correct will always be available*. Please read this document to understand not only how the grade is calculated but **how to use the correction tests to find out if there are errors and which particular cases do not correctly solve your solution**. Solutions and Grading Materials ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Exams are graded authomatically for a comprehensive set of doctests which is a superset of the doctests provided in the exam statement. - The grade will be published at the Atenea task together with the correction log. - The official correct solution together with the correction tests ant the statement will be published at the course website. - Any error preventing the authomatic correction is the student responsability and will not be considered a cause for revision. Com es calcula la nota ---------------------- La correcció dels exàmens la fem a partir de tests que es poden executar amb ``doctest`` però amb un afegit per poder calcular les notes. La nota depèn del nombre de tests passats però alguns tests poden comptar diferent depenent si tracten casos més simples o més complexos. Això succeeix perquè no tots els tests de l'exemple compten per la correcció. Per exemple, si tenim el següent ``doctest`` .. literalinclude:: test1.txt :language: python3 ``doctest`` compta com a test tot el que comença amb ``>>>``, en aquest cas, 3 línes. El primer test (la importació) passarà sempre que existeixin el fitxer i la funció amb els noms indicats. El segon test (l'assignació de la variable a) passarà simplement amb que la funció retorni alguna cosa, sigui correcta o no. L'únic test rellevant per la nota seria el tercer, que és el que comprova si el resultat és correcte. Així, una funció que no doni el resultat correcte, podria tenir el següent resultat .. literalinclude:: resultat1.txt :language: console que **no es pot interpretar com que, passant dos de tres tests, la nota és un 6,66**, perquè l'únic test que comptaria no l'ha passat i per tant seria un 0. Per això, **mentre feu els exercicis o els exàmens heu de mirar el detall de quins tests falla la vostra funció**, no només mirar els resultats finals. Dit això, és habitual que, si es passen tots els tests d'example, la nota no sigui baixa. Però teniu en compte sempre que són exemples i potser que no cobreixin tots els casos de l'enunciat que és el que heu de resoldre. Com interpretar les etiquetes del fitxer de tests de correcció --------------------------------------------------------------- Al fitxer de tests de correcció els tests que compten estan etiquetats amb ``# doctesttag``. A l'exemple anterior podríem tenir, per exemple: .. literalinclude:: test1-etiquetat.txt :language: python3 Quan passeu el ``doctest`` sobre un fitxer de test de correcció amb etiquetes, ``doctest`` les ignora i, per tant, tindreu *totals que inclouran tests que no compten*. És per això que, si voleu trobar a on heu fallat, **heu de revisar els resultats de doctest per buscar quins són els tests etiquetats que no passen**. Com interpretar el càlcul de la nota a partir de les etiquetes -------------------------------------------------------------- A la retroacció de l'examen a Atenea podeu trobar un fitxer amb els resultats que hem obtingut passant els tests de correcció amb les vostres funcions. Al final d'aquest fitxer, hi ha un *resum de les puntuacions parcials* a partir de les que es calcula la vostra nota final. Les **etiquetes** no només indiquen els tests que compten per la nota sinó que també **serveixen per detallar quants punts s'assignen a diferents casos** de cada problema i saber quants s'han obtingut. Per exemple, amb el següent resultat: .. literalinclude:: notes-etiquetes.txt :language: console tindriem que hi ha un problema d'operacions amb cadenes que compta 3,33 punts i que puntua per separat cinc aspectes diferents que compten el mateix (0,67). Com que és una funció modificadora que no ha de retornar res, hi ha tests per comprovar si ho fa o no etiquetats com a ``1_ops_cadenes-comprova_return``. També hi ha tests per comprovar i puntuar per separat les tres operacions explicades a l'enunciat (cute, cutf i dup) amb diferents etiquetes. I, finalment, hi ha tests etiquetats ``1_ops_cadenes-ops_variades`` que comproven combinacions de les tres operacions. Addicionalment, poden haver-hi **penalitzacions a la nota** que s'indicaran al final de la retroacció. Al següent exemple, s'aplica una penalització del 20% de la nota als exercicis marcats amb una etiqueta per no haver cridat a una funció com indicava l'enunciat: .. literalinclude:: penalitzacio.txt :language: console