Notes midterm

Notes midterm

par Jean-Cédric Chappelier,
Nombre de réponses : 0

Bonjour,

Je viens de mettre dans Moodle les notes du midterm et voici les commentaires généraux sur les résultats (corrigé attaché en pièce jointe tout en bas, pour questions si jamais) et je vais vous envoyer sous peu par email vos résultats et commentaires personnels.

MERCI DE LIRE ATTENTIVEMENT le corrigé et le présent message avant de poser d'autres questions.

Concernant les notes mises dans Moodle (onglet Notes) :

  • les notes publiées correspondent à la fraction que vous avez obtenue, multipliée par 100 : par exemple pour cette série notée, cela correspond à
    min(100 * votre total de points / 60, 1)
    puisque l'épreuve est notée sur 60 points ;

  • la note « Total du cours » est calculée automatiquement par Moodle et correspond à la fraction moyenne à ce stade, laquelle est arrondie pour calculer la note « Note » ;

  • la note « Note » correspond à la note arrondie, sur l'échelle habituelle 1-6, avec un arrondi vers le haut (c.-à-d. : > 50% = 3.75, > 55% = 4, > 60% = 4.25, etc.), que vous auriez si on arrêtait là.
    Je la remettrai à jour à la fin du semestre, après l'examen.

    Tout ceci a été expliqué en détail dans le premier cours.

L'histogramme ci-dessous (en fin de message) représente la répartition des points à cette série notée. Le min est de 19.5 et le max de 60 ; la moyenne de 43.22 (note équiv. : 4.75) et la médiane à 43.20. Le taux de réussite est de 85.56%.

C'est donc une série globalement bien réussie. Bravo pour votre travail !

Voici néanmoins ci-dessous les principale remarques globales, afin de vous corriger/vous améliorer dans votre future vie de programmeur/programmeuse. Voyez aussi les éventuelles remarques de vos correcteurs dans votre rendu personnel (que je vais vous envoyer).

Cette série notée a bien fait la différence entre celles/ceux qui pratiquent et les autres :
problèmes de connaissance du langage et de gestion de mémoire;
avec plus de pratique chez certain(e)s, ils/elles aurait pu éviter énormément d'erreurs
qu'on fait une fois, mais pas deux.

Voici les erreurs les plus fréquentes :

- beaucoup ont retourné des adresses de variables locales

- définition de tableaux statiques dans des structs avec une taille qui dépend d'autres champs

- mauvaise compréhension de la gestion de strings (pas de null
  terminators, mauvaise utilisation des fonctions str*, ...)

- oubli d'allouer dynamiquement la nouvelle chaîne de caractères dans `new_substring()`
 
- trop ou pas assez de & ou *

- quelques VLAs

- pas de tests sur les retours de [mc]alloc

- buffer overflows (typiquement off-by-one sur les chaînes (oubli du +1 pour le null-char))

- beaucoup de memory leaks, même dans l'exercice où c'était précisé de faire attention

- encore quelques personnes qui connaissaient pas les fonctions de string.h et refaisaient tout à la main

- encore des confusions entre int et size_t

- presque personne n'a vérifié l'overflow de la mulitplication avant l'allocation (`prepare_garden()`)

- mineur : pas mal de personnes ne savent pas que calloc() initialise tout à 0, et du coup memset() encore après à 0