Notes du homework

Notes du homework

by Jean-Cédric Chappelier -
Number of replies: 0
Bonjour à toutes et à tous !


Pour celles et ceux qui sont en conformité avec le cours
(cf https://moodle.epfl.ch/mod/forum/discuss.php?d=96100),
je viens de publier les notes du devoir à la maison
et vais vous envoyer sous peu un email votre programme et le détail des points obtenus.

Vos correcteurs/correctrices ont PEUT ETRE ajouté des commentaires dans votre code
ou dans la fiche de correction (qui vont vous être retourné), mais sinon, les principales erreurs sont
détaillées ci-dessous.

Celles et ceux qui s'étaient enregistrées pour l'étude sur un feedback
détaillé (cf https://moodle.epfl.ch/mod/forum/discuss.php?d=96997)
devraient le recevoir bientôt.

Avec une moyenne de 5.5 et un taux de réussite de 97%
(distribution des points en fin de ce message),
c'est un devoir très bien réussi.
Bravo !

Au niveau des points positifs :

- globalement, les concepts ont l'air d'avoir été bien intégrés ;
- beaucoup de codes bien commentés et joliment présentés ;
- pas mal d'utilisation du const& ;
- (bon réflexe : ) plusieurs pensent à des cas potentiellement
  problématiques non évoqués dans la donnée.

Cependant il reste encore des aspect à améliorer :

- il y a encore trop souvent de la répétition de code (« copié-collé ») ;

- d'autres par contre ont mal compris ce conseil (« pas de copié-collé »)
  et font trop de fonctions inutiles (s'il n'y a pas de copié-collé
  **ET** si la fonction est petite (disons moins de 2 lignes) ou ne
  correspond pas à un concept IMPORTANT, ce n'est pas la peine d'en
  faire une fonction).

  Autre exemple (lié au manque d'abstraction) : faire une fonction
  auxiliaire pour regarder si un element appartient a la liste
  d'appels passes, et une autre fonction auxiliaire pour verifier si
  un element appartient a la liste des appels reçus, au lieu de faire
  simplement une fonction "appartient" (dégager l’abstraction).
 
- peu de groupes ont vérifié l'id donné à chat() (ou se préserver
  contre un System vide) : il est important que les « fonctions
  d'interface » (fonctions de plus haut niveau) vérifient la cohérence
  de ce qu'elles reçoivent/font

- éviter les copies inutiles (de données ; p.ex. dupliquer le System)

- mauvaise conception : vector<Client> : c'est incohérent du point de
  vue de la logique des données (duplication incohérente
  d'information, p.ex. comment lister les appelés des appelés de X?)
  et aussi de la copie inutile de données

- utilisation de int au lieu de size_t

- fonction de recherche dans le System qui retourne l'index 0 alors
  que ceci est un index valable (celui du premier Client)

- beaucoup d'étudiant(e)s ne voient pas encore l'importance de donner
  des noms compréhensibles et pertinents aux fonctions, variables ou
  type. Ce n'est pas encore très important dans ce type de devoirs,
  mais ce genre de reflexes vous aidera beaucoup dans votre futur en
  Prog, notamment pour le projet du prochain semestre (et
  accessoirement cela rendrait la correction de certaines copies plus
  agréable).

- Un autre petit commentaire suite à des questions posées
  pendant les séances d'exercices  : plusieurs étudiant(e)s étaient
  surpris(e)s qu'il est possible de `return;` (sans rien) d'une fonction
  `void`. On l'a aussi vu dans certains rendus où des plusieurs
  `if ... else ...` sont enchaînées au lieu de simplement sortir
  de la fonction (par « return; ») en cas d'erreur.

Distribution des points : (en % du total qui était de 45.5 points)