Laboratoires¤
Les laboratoires sont des travaux pratiques permettant à l'étudiant d'attaquer des problèmes de programmation plus difficiles que les exercices faits en classe.
Protocole¤
- Récupérer le référentiel du laboratoire en utilisant GitHub Classroom.
- Prendre connaissance du cahier des charges.
- Rédiger le code.
- Le tester.
- Rédiger votre rapport de test si demandé.
- Le soumettre avant la date butoir.
Évaluation¤
Une grille d'évaluation est intégrée à tous les laboratoires. Elle prend la forme d'un fichier criteria.yml
que l'étudiant peut consulter en tout temps.
Directives¤
- La recherche sur internet est autorisée et conseillée.
- Le plagiat n'est pas autorisé, et sanctionné si découvert par la note de 1.0.
- Le rendu passé la date butoir est sanctionné à raison de 1 point puis 1/24 de point par heure de retard.
Format de rendu¤
- Fin de lignes :
LF
('\n'
). - Encodage : UTF-8 sans BOM.
- Code source respectueux de ISO/IEC 9899:1999.
- Le code doit comporter un exemple d'utilisation et une documentation mise à jour dans
README.md
. - Lorsqu'un rapport est demandé, vous le placerez dans
REPORT.md
.
Anatomie d'un travail pratique¤
Un certain nombre de fichiers vous sont donnés, il est utile de les connaître. Un référentiel sera généralement composé des éléments suivants :
$ tree
.
├── .clang-format
├── .devcontainer
│ ├── Dockerfile
│ └── devcontainer.json
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .vscode
│ ├── launch.json
│ └── tasks.json
├── Makefile
├── README.md
├── assets
│ └── test.txt
├── foo.c
├── foo.h
├── main.c
├── criteria.yml
└── tests
├── Makefile
└── test_foo.c
README.md¤
Il s'agit de la documentation principale de votre référentiel. Elle contient la donnée du travail pratique en format Markdown. Ce fichier est également utilisé par défaut dans GitHub. Il contient notamment le titre du laboratoire, la durée, le délai de rendu et le format individuel ou de groupe :
# Laboratoire <!-- omit in toc -->
- **Durée**: 2 périodes + environ 3h à la maison
- **Date de rendu**: dimanche avant minuit
- **Format**: travail individuel
...
criteria.yml¤
Ce fichier contient les directives d'évaluation du travail pratique. Il est au format YAML. Pour chaque point évalué une description est donnée avec la clé description
et un nombre de points est spécifié. Une exigence peut avoir soit un nombre de points positifs soit négatifs. Les points négatifs agissent comme une pénalité. Ce choix d'avoir des points et des pénalités permet de ne pas diluer les exigences au travers d'autres critères importants, mais normalement respectés des étudiants.
Des points bonus sont donnés si le programme dispose d'une aide et d'une version et si la fonctionnalité du programme est étendue.
# Critères d'évaluation du travail pratique
%YAML 1.2
---
tests:
build:
description: Le programme compile sans erreurs ni warning
points: 0/-4
test: test_build
unit-testing:
function_foo:
points: 0/10
test: test_foo
function_bar:
points: 0/10
test: test_bar
functional-testing:
arguments:
description: La lecture des arguments fonctionne comme demandé
points: 0/7
test: test_arguments
output-display:
description: Affichage sur stdout/stderr comme spécifié
points: 0/3
test: test_output
errors:
description: Le programme affiche des erreurs si rencontrées
points: 0/2
test: test_errors
report:
introduction:
description: Le rapport de test contient une introduction
points: 0/2
conclusion:
description: Le rapport de test contient une conclusion
points: 0/2
analysis:
description: Le rapport de test contient une analyse du comportement
points: 0/3
code:
specifications:
prototypes:
description: Les prototypes des fonctions demandées sont respectés
points: 0/3
main:
description: Le programme principal est minimaliste
points: 0/3
algorithm:
description: L'algorithme de encode/decode est bien pensé
points: 0/5
comments:
header:
description: Un en-tête programme est clairement défini
points: 0/2
purpose:
description: Les commentaires sont pertinents
points: 0/-2
commented-code:
description: Du code est commenté
points: 0/-2
variables:
naming:
description: Le noms des variables est minimaliste et explicite
points: 0/2
scope:
description: La portée des variables est réduite au minimum
points: 0/2
type:
description: Le type des variables est approprié
points: 0/2
functions:
length:
description: La longueur des fonctions est raisonnable
points: 0/-4
control-flow:
description: Les structures de contrôle sont appropriées
points: 0/4
overall:
dry:
description: Pas de répétition dans le code
points: 0/-5
kiss:
description: Le code est minimaliste et simple
points: 0/-5
ssot:
description: Pas de répétition d'information
points: 0/-5
indentation:
description: L'indentation du code est cohérente
points: 0/-5
bonus:
help:
description: Le programme dispose d'une aide
bonus: 0/1
test: test_help
version:
description: La version du programme peut être affichée
bonus: 0/1
test: test_version
extension:
description: La fonctionnalité du programme est étendue
bonus: 0/3
english:
description: Usage de l'anglais
bonus: 0/1
Ce fichier est utilisé par des tests automatique pour faciliter la correction du travail pratique.