17
Hiver 2005 Progammation et plagiat Programmation et plagiat Programmation et plagiat Comment réutiliser correctement du Comment réutiliser correctement du code source dans un cours de code source dans un cours de programmation. programmation. Christopher Fuhrman, Département de Génie Christopher Fuhrman, Département de Génie logiciel et des TI logiciel et des TI Frédérick Henri, Service aux Enseignements Frédérick Henri, Service aux Enseignements Généraux Généraux

Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Embed Size (px)

Citation preview

Page 1: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Hiver 2005 Progammation et plagiat

Programmation et plagiatProgrammation et plagiat

Comment réutiliser correctement du code Comment réutiliser correctement du code source dans un cours de programmation.source dans un cours de programmation.

Christopher Fuhrman, Département de Génie logiciel Christopher Fuhrman, Département de Génie logiciel et des TIet des TIFrédérick Henri, Service aux Enseignements GénérauxFrédérick Henri, Service aux Enseignements Généraux

Page 2: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

2

Introduction

• Problématique :– La réutilisation de code est parfois reconnue

comme une bonne pratique dans la programmation.

– L’ÉTS a une politique « tolérance zéro » pour le plagiat.

• Objectifs de cette présentation :– Communiquer la politique de l’École concernant

le plagiat, ainsi que les sanctions.– Expliquer les différences entre la bonne et la

mauvaise réutilisation de code source.– Réduire le nombre de cas de plagiat dans les

cours de programmation.

Page 3: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

3

Ce qu’il faut savoir

• Nous vous conseillons de lire le Chapitre 10 : Plagiat et fraude du Règlement des études de 1er cycle pour les définitions ainsi que les sanctions du plagiat.

• Nous utilisons depuis 2001 un outil logiciel sophistiqué qui mesure la similarité entre un nombre illimité de programmes Java, C, etc., quelque soit l’appellation des classes, des variables, etc.

Page 4: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

4

Ce qu’il faut savoir

• Pour le plagiat concernant un programme copié, nous demandons à l’Administration une sanction minimale de l’échec au cours.

Page 5: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

5

Comité de discipline

• Nécessaire dans un cas de plagiat

– « Tolérance zéro »

• Gênant pour toutes les personnes impliquées

– Étudiants (vous)– Enseignants (nous)– Membres du Comité de

discipline– ÉTS

Page 6: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

6

Quatre cas typiques

• Examinons quatre cas typiques de mauvaise réutilisation de code source

– Profils de cas étant déjà passés au Comité de discipline de l’ÉTS

• Objectif : savoir comment éviter de passer au comité de discipline.

Page 7: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

7

Plagiat : cas numéro 1

1. Réutilisation de code provenant d'un livre sans citer sa source

– C'est du plagiat selon le Règlement des études de 1er cycle, section 10.2 :« Reproduire soit une partie importante du

texte d'un auteur sans en indiquer les références, soit encore une partie importante du texte d'un autre étudiant; »

– Il suffit de citer la source du code (avec un commentaire) pour régler ce problème de plagiat!

Page 8: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

8

Plagiat : cas numéro 2

2. Réutilisation de code provenant de l'Internet sans citer sa source

– En principe, ceci est comparable à la réutilisation de code dans un livre (1er cas).

– Vous courez les mêmes risques si vous ne citez pas la source.

– Il suffit de citer la source du code (avec un commentaire) pour régler ce problème de plagiat!

Page 9: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

9

Plagiat : cas numéro 3

3. Réutilisation du code d'un autre étudiant

– S'applique si c'est un étudiant d'une session précédente, d'un autre groupe de classe de la même session, ou de la même classe

– Ce cas constitue la pire forme de plagiat et vous devez l’éviter à tout prix!

Page 10: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

10

Plagiat : cas numéro 4

4. Réutilisation de son propre code source (l'autoplagiat)

– On le définit dans le Règlement des études de 1er cycle, section 10.2, ainsi :« Présenter dans ses travaux écrits un

même texte à des professeurs différents sans avoir reçu l'autorisation du ou des professeurs concernés »

– Demander l'autorisation du ou des professeurs concernés pour régler ce problème potentiel de plagiat.

Page 11: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

11

Comment citer correctement un code

source réutilisé?• La citation doit :

– Spécifier clairement que le code a été emprunté.

– Permettre de retrouver le plus rapidement possible la source du code. Cela a l’avantage aussi de faciliter la maintenance du code, un défi important en génie logiciel.

– Indiquer où débute la partie de code empruntée et où celle-ci se termine.

– Faciliter la compréhension de ce que réalise la partie de code empruntée.

Page 12: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

12

Exemple de mauvaise citation

• Commentaire général en haut du programme.• Impossible de savoir quelles parties du code

source ont été empruntées.• Ce genre de citation ne suffit pas !

/**

Titre: TFTPClient.java

Description: Cette classe permet l'implémentation d'un Client TFTP

selon le RFC783

Référence:

http://www-igm.univ-mlv.fr/~roussel/vuibert/chap7/TFTPServer.html

Version Auteur Date Description

1.0 Jean Untel 05/04/2002 Initial

**/

Page 13: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

13

Exemple de bonne citation/* CODE EMPRUNTÉ : Les lignes suivantes sont basées sur une classe provenant du site : http://home.earthlink.net/~rtayek/ray/tftp.zip Dans ce zip, j'ai pris un exemple qui provient de

la classe tftp.java pour créer le paquet à envoyer.*/

buf2 = filename.getBytes();System.arraycopy(buf2, 0, buf, pos, buf2.length);buf[pos + buf2.length] = 0;pos += buf2.length + 1;buf2 = mode.getBytes();System.arraycopy(buf2, 0, buf, pos, buf2.length);buf[pos + buf2.length] = 0;

/* FIN DU CODE EMPRUNTÉ */

Page 14: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

14

Exemple de bonne citation/* CODE EMPRUNTÉ : Les lignes suivantes proviennent du livre : Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Introduction to algorithms, McGraw-Hill, page 246 Cette fonction permet de retourner un pointeur vers le nœud contenant la valeur k dans un ABF. Elle retourne NULL si la valeur n’est pas dans l’arbre.*/Nœud * tree_search(Nœud * x, int k){ if (x == NULL || x->valeur == k) return x; if (k < x->valeur)

return tree_search(x->left, k); return tree_search(x->right, k);}/* FIN DU CODE EMPRUNTÉ */

Page 15: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

15

Prenez garde…

• Dans certains cours, particulièrement les cours de programmation de base, il se peut que l’objectif d’un travail soit la création d’algorithmes ou de code.

– Si vous réutilisez du code, même en citant correctement sa source, vous pourrez vous voir attribuer la note 0, non pas à cause du plagiat, mais bien parce que vous n’aurez pas atteint les objectifs demandés !

Page 16: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

16

Prenez garde… (suite)

• Votre contribution originale est généralement la base de votre évaluation (la note) pour le travail.

– Réutilisation complète d’un travail, bien que correctement citée, ne vaudra pas une bonne note.

• La bonne citation du code réutilisé évitera le risque du plagiat, mais ne garantit pas une bonne note!

Page 17: Hiver 2005Progammation et plagiat Programmation et plagiat Comment réutiliser correctement du code source dans un cours de programmation. Christopher Fuhrman,

Progammation et plagiat

17

Un dernier conseil

• En cas de doute, demandez à votre enseignant !