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
>>> from meu_fitxer import meva_funcio
>>> a = meva_funcio(3, 5)
>>> a
8
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
1 items had failures:
1 of 3 in test1.txt
3 tests in 1 items.
2 passed and 1 failed.
***Test Failed*** 1 failures.
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:
>>> from meu_fitxer import meva_funcio
>>> a = meva_funcio(3, 5)
>>> a # doctesttag: +TAG=1_suma_nombres
8
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:
4.22 nota total sobre 10.00.
2.00 nota 1_ops_cadenes sobre 3.33.
0.67 nota 1_ops_cadenes-comprova_return sobre 0.67.
0.67 nota 1_ops_cadenes-op_cute sobre 0.67.
0.00 nota 1_ops_cadenes-op_cutf sobre 0.67.
0.67 nota 1_ops_cadenes-op_dup sobre 0.67.
0.00 nota 1_ops_cadenes-ops_variades sobre 0.67.
2.22 nota 2_incidencies sobre 3.33.
1.11 nota 2_incidencies-tots_iguals sobre 1.11.
0.00 nota 2_incidencies-tots_valors sobre 1.11.
1.11 nota 2_incidencies-uns_i_zeros sobre 1.11.
0.00 nota 3_pneumatics sobre 3.33.
0.00 nota 3_pneumatics-extreu_data sobre 1.67.
0.00 nota 3_pneumatics-extreu_data-amb_un_digit sobre 0.83.
0.00 nota 3_pneumatics-extreu_data-tots_dos_digits sobre 0.83.
0.00 nota 3_pneumatics-mal_ordenat sobre 1.67.
0.00 nota 3_pneumatics-mal_ordenat-bon_ordre sobre 0.56.
0.00 nota 3_pneumatics-mal_ordenat-mal_ordre_any sobre 0.56.
0.00 nota 3_pneumatics-mal_ordenat-mal_ordre_setmana sobre 0.56.
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:
Per calcular la nota s'ha aplicat el següent:
Penalització del 20% sobre 2_normalitzacio-2_transforma perquè transforma no crida normalitza.