Notes examen 2 (programmation)

Notes examen 2 (programmation)

by Jean-Cédric Chappelier -
Number of replies: 1

Bonjour,

Je viens de mettre dans Moodle les notes du second examen (programmation) et voici les commentaires généraux sur les résultats (sujet et corrigé en pièces jointes en bas de ce message). Et je vais sous peu vous envoyer vos résultats personnels par email.

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

Concernant les notes mises dans Moodle (onglet Notes) :

  • Les notes ne sont publiées (et les résultats communiqués dans votre «dropbox» EPFL) que si vous avez rejoint le groupe Coursera (cf les nombreux messages à ce sujet) et soumis les devoirs («Exercices de programmation»/«Programming assignments»).
    Si ce n'est pas le cas, veuillez d'abord vous mettre en conformité avec cette règle du cours (cf 1ère semaine).

  • 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 à
    100 * votre total de points / 56
    car l'épreuve est notée sur 56 points.

  • La note "Total du cours" est calculée automatiquement par Moodle et correspond à la fraction moyenne, 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.5, etc.), que vous auriez si on arrêtait à ce stade.
    Je la remettrai à jour à la fin du semestre, après le dernier examen.

    Tout ceci a été clairement expliqué dans le premier cours.

L'histogramme suivant présente la répartition des notes équivalentes obtenues suivant l'échelle expliquée ci-dessus (arrondi vers le haut, 55% = limite 3.75/4.0):

[distribution des points à l'examen 2]

Le nombre maximum de points obtenus a été de 59.5 sur 56. Les 50.5 points (=90% du barème max, correspondant à la limite inférieure du 5.75) ont été atteints (ou dépassés) par 88 d'entre vous (28%) et 82% ont eu plus de la 55% des points (c.-à-d. 4.0 ou plus). Cette série est donc très bien réussie. Bravo !

Ceci dit, de l'autre coté (cf histogramme ci-dessus), un certain nombre d'entre vous (environ 8%) ont encore beaucoup (voire énormément) de mal avec la programmation.
A ces étudiants qui ont complètement raté la série je conseillerai de tout reprendre au départ et dans l'ordre du cours (variables, types, if, for, while et fonctions) et en suivant les conseils donnés en cours. Il n'est encore pas trop tard, mais cela ne sert à rien d'essayer de continuer à apprendre si les bases les plus rudimentaires ne sont pas acquises ! Reprenez les bases, mais faites-le sérieusement et DÈS MAINTENANT.

Je voudrais également donner ici un autre conseil : regarder les corrigés, regarder un camarade faire la donnée, lire le livre ne suffit pas !
Il faut absolument travailler par vous-même, vous mettre devant l'écran vide et faire tout l'exercice par vous même.
Et si vous êtes bloqués, n'abandonnez pas trop vite, notez le (pourquoi vous êtes bloqués) et demandez nous ensuite conseil (explication sur les raisons du blocage). Ne consultez le corrigé (ou l'assistant) qu'une fois que vous avez clairement identifié pourquoi vous étiez bloqué. C'est comme cela que vous pourrez progresser.

Voici maintenant, pour tout le monde, des remarques plus détaillées, afin de vous corriger/vous améliorer (voir aussi le corrigé ci-joint) :

Question 1

Certains ne savent encore pas correctement itérer sur un tableau à ce stade (p.ex. ils commencent à 1) ou comment faire appel à une fonction. Pour ceux là, il est urgent de reprendre le cours A SA BASE (c.-à-d. recommencer à partir des premières leçons). Ca ne sert à RIEN de continuer si les bases ne sont pas acquises.

Trop d'oubli de précautions avec les divisions : division par 0, division entière.

Pas encore bien au clair sur comment « retourner » plusieurs valeurs et confusion de cas d'utilistion des vector (si l'on connait la taille et que celle-ci ne change pas, utiliser des array (ou struct si le nombre est petit (quelques champs)). Très peu pensent à utiliser ici le passage par référence des 2 variables.

Plus mineur, mais attention tout de même : pas mal d'étudiants ont écrit de manière fausse les puissances (notamment avec le signe "^"), alors qu'en faisant les séries on devrait se rendre compte qu'on ne peut pas écrire les puissances ainsi en c++. Peut être l'effet « sur papier ».

Question 2

- En general les étudians semblent etre à l'aise avec le c++, mais on a deux extrema: soit ils ont raté l'entièreté de la question, soit ils ont eu presque tous les points. Il n'y a pas tellement d'entre deux...

- Q2.1: une structure plutôt qu'un vector avec typedef pour la collection de musiques

- Q2.2: accès à collection[0] sans test de la taille du vector ; mise à vide de chaque nom de morceau

- Q2.3: pratiquement personne n'a géré la division entière, oubli parfois de la gestion de division par zéro

- Q2.4: appel dupliqué de la fonction max de Q2.2

- Q2.5: très souvent une liste intermédiaire est créée et retournée dans laquelle sont ajoutés les éléments répondant au prédicat

- Q2.6: trop peu de vraies intersections (manque de connaissance mathématique ou trop mal lu la donnée ??) : soit union avec doublon, différence symétrique (ou non) voire même un résultat parfois pas représentable avec la notation ensembliste. Cette question montre qu'il y a encore des difficultés avec l'algorithmique même sur des cas simples. A retravailler.

Globalement, peu de modularisation du code là où s'eût été possible. Ce réflexe n'est pas encore aquis.

Mais sinon, du coté positif: les codes étaient globalement assez bons pour un premier examen de programmation, et même certaines bonnes pratiques/conventions de code (p.ex. un nommage correct des variables) étaient assez bien respectées, ce qui fait plaisir à voir à ce niveau.

In reply to Jean-Cédric Chappelier

Re: Notes examen 2 (programmation)

by Jean-Cédric Chappelier -

> Et je vais sous peu vous envoyer vos résultats personnels par email.

Désolé mais il semble y avoir des problèmes réseau/server email.
Je n'ai pu envoyer que 85 copies. Je réessayerai demain pour le reste.