CT de mardi 3 janvier 2023

CT de mardi 3 janvier 2023

par FACCANONI Gloria,
Nombre de réponses : 1

Bonjour à tous,

Mardi 3 janvier  aura lieu le CT de l'ECUE PIM-11 (Introduction à la programmation informatique) au bâtiment U1.

Voici quelques rappels et précisions (si le message ne s'affiche pas bien, consulter le dernier post du forum "Annonces" sur Moodle).

Durée
Il s'agit d'un test Moodle. La durée de l'épreuve est de 2h à partir de la connexion au test. Votre tentative devra donc être envoyée durant ce laps de temps même si le test est encore ouvert.

Documents et Ordinateur personnel
Si vous préférez utiliser votre ordinateur vous pouvez l'amener (vous pourrez ainsi travailler dans les mêmes conditions qu'en TP avec le même IDE et vos fichiers), il faut juste s'assurer d'avoir accès à Moodle (et ne pas avoir de problèmes de wifi).
Durant toute la durée de l'examen il vous est interdit de communiquer avec qui que ce soit à l'exception de l'enseignant qui vous surveille. Vous pouvez consulter seulement une feuille A4 recto-verso manuscrite et vos fichiers de TP. Tout autre document (papier ou numérique, notamment mon polycopié) et appareils électroniques sont interdits.

Contenu
Le test consiste en une série de questions tirées aléatoirement dans une même banque de questions. La correction est automatique : votre code est vérifié sur plusieurs tests tirés eux aussi aléatoirement.

Type de réponse et correction automatique.
Pour répondre à une question il suffira de copier-coller votre code dans la zone réponse puis de cliquer sur "vérifier". Chaque question fonctionne sur le modèle "tout-ou-rien" : votre code sera alors analysé et les points de la question vous seront attribués s'il passe avec succès tous les tests. Le programme qui vérifie votre code et l'exécute est intransigeant sur le résultat qui doit être renvoyé ou affiché. Des espaces, majuscules ou caractères de ponctuation mal placés peuvent causer l'échec à une question même si le résultat semble juste. Attention : bien qu'il soit possible de modifier votre code jusqu'à ce qu'il soit correct, chaque nouvelle tentative diminuera le nombres de points attribués (10% des points en moins après chaque tentative dès la dès la troisième tentative). Il est donc fortement recommandé de tester rigoureusement votre code avant de le soumettre. Pour cela, un ou plusieurs exemples sont toujours indiqués dans l'énoncé pour que vous testiez le code sur votre ordinateur avant de le copier-coller dans moodle. Cependant, bien noter que les tests qui vérifient votre code sont automatiques et tirent  aléatoirement un nouveau jeux de données à chaque fois que je les relance pour une analyse des copies. Cela a plusieurs conséquences :

  1. Inutile d'écrire une fonction qui se contente de mimer les réponses proposées par une première tentative de soumission.
  2. Le but n'est pas que votre code passe des tests (ce n'est pas un concours de programmation !) mais de vérifier vos acquis. Les tests aléatoires aident dans cette évaluation mais ne remplacent pas la lecture de ma part de votre code à posteriori.
  3. Si les tests ne passent pas, c'est qu'il y a probablement une erreur dans votre code. Si vous ne comprenez pas, vous pouvez demander aux surveillants de l'aide pour voir si vous avez mal lu/compris l'énoncé (ou s'il y a un souci dans ce que j'ai codé dans Moodle, ça arrive !).
  4. En revanche, si les quelques tests proposés passent tous, il se peut qu'il y ait encore un souci dans votre code et que tout simplement pas tous les cas possibles ont été analysés lors de cette vérification. C'est pour cela que, une fois les contrôles terminés, je vais re-tester toutes les copies plusieurs fois avec des nouveaux tirages aléatoires. Et c'est aussi pour cela que je relis chaque copie et parfois ajoute des commentaires (comme s'il s'agissait d'une copie sur papier). Pour éviter des mauvaises surprises, il faut tester son code sur des cas bien choisis par vous même.

def vs lambda
Dans la presque totalité des exercices, il est demandé de compléter une fonction pré-remplie. Cette fonction est soit définie par le mot-clé lambda soit par le mot-clé def. Vous pouvez modifier la fonction pré-remplie pour transformer une fonction définie avec def en une fonction définie avec lambda et vice-versa. Cependant, ne pas changer sa signature, c'est-à-dire ne pas changer son nom ni l'ordre des paramètres en entrée et bien lire la consigne pour le type et l'ordre des objets en sortie.

LE SILENCE EST D'OR
Lorsqu'elle est appelée, aucune de vos fonctions ne devra jamais afficher quoi que ce soit, mais retourner silencieusement le résultat attendu (même s'il s'agit d'une chaîne de caractères). Vous pouvez faire quelques print pour le débogage pendant le développement dur Idle, mais n'oubliez pas de les commenter avant de les soumettre.
Bien-sûr, il faudra bien utiliser des print si, au lieu d'une fonction, on doit compléter un script.

 

À demain
Gloria Faccanoni

En réponse à FACCANONI Gloria

CT de mardi 3 janvier 2023

par FACCANONI Gloria,
Bonjour à tous,
j'ai terminé la correction des copies de CT et vous pouvez maintenant accéder à votre note, votre copie avec un proposition de correction pour chaque question, parfois des commentaires que j'ai ajoutés à vos codes.
Bon courage pour votre dernier CT.
Gloria Faccanoni