Une plateforme didactique pour la programmation impérative présentation par Yann Chevaleyre du projet proposé par : Sébastien Guérif [email protected] Université Paris 13, Institut Galilée - LIPN/CNRS UMR 7030 99, avenue Jean-Baptiste Clément, 93430 Villetaneuse, France. Présentation des projets Master 1 info - vendredi 11 février 2011 Contexte (1/2) Apprentissage de la programmation impérative � Analyser un problème � Décomposer un problème en sous-problèmes � Formaliser sa résolution en écrivant des algorithmes Deux grandes approches pédagogiques 1. Apprendre l’algorithmique sans mise en pratique 2. Apprendre un langage de programmation sans notion préablable d’algorithmique Contexte (2/2) 1. Commencer par des notions purement algorithmiques � � Convient aux plus motivés Absence de mise en pratique : trop abstrait pour les autres 2. Apprendre un langage de programmation sans notion préablable d’algorithmique � Quel langage de programmation ? � � � � Pascal : typage fort Python : pas de déclaration de variables, indentation intégrée à la syntaxe C : complexe mais syntaxe de base de nombreux langages (C++, C#, Java, ...) Confusion de 2 types de difficultés par l’apprenti � � syntaxique algorithmique Contexte (2/2) 1. Commencer par des notions purement algorithmiques � � Convient aux plus motivés Absence de mise en pratique : trop abstrait pour les autres 2. Apprendre un langage de programmation sans notion préablable d’algorithmique � Quel langage de programmation ? � � � � Pascal : typage fort Python : pas de déclaration de variables, indentation intégrée à la syntaxe C : complexe mais syntaxe de base de nombreux langages (C++, C#, Java, ...) Confusion de 2 types de difficultés par l’apprenti � � syntaxique algorithmique Contexte (2/2) 1. Commencer par des notions purement algorithmiques � � Convient aux plus motivés Absence de mise en pratique : trop abstrait pour les autres 2. Apprendre un langage de programmation sans notion préablable d’algorithmique � Quel langage de programmation ? � � � � Pascal : typage fort Python : pas de déclaration de variables, indentation intégrée à la syntaxe C : complexe mais syntaxe de base de nombreux langages (C++, C#, Java, ...) Confusion de 2 types de difficultés par l’apprenti � � syntaxique algorithmique Contexte (2/2) 1. Commencer par des notions purement algorithmiques � � Convient aux plus motivés Absence de mise en pratique : trop abstrait pour les autres 2. Apprendre un langage de programmation sans notion préablable d’algorithmique � Quel langage de programmation ? � � � � Pascal : typage fort Python : pas de déclaration de variables, indentation intégrée à la syntaxe C : complexe mais syntaxe de base de nombreux langages (C++, C#, Java, ...) Confusion de 2 types de difficultés par l’apprenti � � syntaxique algorithmique Contexte (2/2) 1. Commencer par des notions purement algorithmiques � � Convient aux plus motivés Absence de mise en pratique : trop abstrait pour les autres 2. Apprendre un langage de programmation sans notion préablable d’algorithmique � Quel langage de programmation ? � � � � Pascal : typage fort Python : pas de déclaration de variables, indentation intégrée à la syntaxe C : complexe mais syntaxe de base de nombreux langages (C++, C#, Java, ...) Confusion de 2 types de difficultés par l’apprenti � � syntaxique algorithmique Objectif du projet Quoi ? Disposer d’une plateforme adaptée à l’enseignement de la programmation impérative Pour qui ? Étudiants de l’Institut Galilée � Licence 1, classes prépa intégrées, ... Contraintes : � � Ergonomie de l’application Portabilité � Linux, MacOS et Windows (XP, Vista et 7) Un environnement d’apprentissage de plus en plus riche � Environnement « débutant » � � � � Environnement « avancé » � � � Notion d’algorithmes avec ou sans paramètre Structures de contrôle (conditionnelle et répétitive) Simulation d’agorithmes Consolidation des bases algorithmiques Représentation binaire de l’information Environnement « expert » � � � Concept de variable Langage assembleur Schéma de traduction des structures de contrôles Environnement « débutant » � 1 plateau : 4 cases (bleue, jaune, rouge et verte) � 1 réserve infinie de jetons � 5 niveaux Niveau 1 8 instructions possibles : � « poser un jeton dans la � « poser un jeton dans la � « poser un jeton dans la � « poser un jeton dans la case bleue », � « retirer un jeton de la � « retirer un jeton de la � « retirer un jeton de la � « retirer un jeton de la case bleue », case jaune », case rouge », case verte », case jaune », case rouge », case verte ». Environnement « débutant » � 1 plateau : 4 cases (bleue, jaune, rouge et verte) � 1 réserve infinie de jetons � 5 niveaux Niveau 2 Ajout de la structure conditionnelle « si-alors-sinon-finsi » aux 8 instructions du niveau 1 : � 4 conditions possibles : � � � � � « « « « la la la la case case case case bleue jaune rouge verte est est est est vide vide vide vide », », », ». 1 seul des 2 blocs d’intructions (alors ou sinon) peut rester vide Environnement « débutant » � 1 plateau : 4 cases (bleue, jaune, rouge et verte) � 1 réserve infinie de jetons � 5 niveaux Niveau 3 Introduction implicite de la notion d’algorithme paramétré : ce n’est qu’une « commodité syntaxique ». � « poser(case ∈ {bleue, . . . , verte}) » remplace « poser un jeton dans la case bleue », ... � « retirer(case ∈ {bleue, . . . , verte}) » remplace « retirer un jeton de la case bleue », ... � « est_vide(case ∈ {bleue, . . . , verte}) » remplace « la case bleue est vide », ... Environnement « débutant » � 1 plateau : 4 cases (bleue, jaune, rouge et verte) � 1 réserve infinie de jetons � 5 niveaux Niveau 4 Ajout de la structure de répétition « tantque-fintantque » : � conditions possibles � � � � opérandes élémentaires : prédicat unaire « est_vide », opérateurs logiques : « non », « et » et « ou », possibilité d’utiliser des expressions parenthèsées. le bloc d’instructions ne peut pas être vide. Restriction de la structure conditionnelle « si-alors-sinon-finsi » � le bloc d’instructions « alors » ne peut plus être vide. Environnement « débutant » � 1 plateau : 4 cases (bleue, jaune, rouge et verte) � 1 réserve infinie de jetons � 5 niveaux Niveau 5 Introduction explicite de la notion d’algorithmes paramétrés � possibilité de constituer une bibliothèque d’algorithmes paramétrés. Environnement « avancé » � � 1 plateau : 4 cases (bleue, jaune, rouge et verte) 1 case : � � � � n jetons alignés le long d’un rail 1 jeton : 1 face blanche et 1 face noire 1 charriot équipé d’une caméra et d’un bras articulé 2 niveaux Niveau 1 3 instructions : � « avancer(case ∈ {bleue, . . . , verte}) », � « reculer(case ∈ {bleue, . . . , verte}) », � « retourner(case ∈ {bleue, . . . , verte}) ». 4 prédicats : � « premier(case ∈ {bleue, . . . , verte}) », � « dernier(case ∈ {bleue, . . . , verte}) », � « blanc(case ∈ {bleue, . . . , verte}) », � « noir(case ∈ {bleue, . . . , verte}) ». Environnement « avancé » � � 1 plateau : 4 cases (bleue, jaune, rouge et verte) 1 case : � � � � n jetons alignés le long d’un rail 1 jeton : 1 face blanche et 1 face noire 1 charriot équipé d’une caméra et d’un bras articulé 2 niveaux Niveau 2 2 nouvelles cases : � orange : � � p jetons alignés violette : � (2p × n) jetons alignés Environnement « expert » � Introduction de la notion informatique de variable � � « Une variable est un nom qui sert à repérer un emplacement mémoire, dont on peut faire évoluer la valeur, au fil du déroulement d’un programme ». (Claude Delannoy) 5 niveaux Niveau 1 � � Variables à valeurs entières Affectation notée « ← » qui se lit « prend pour valeur » � � � constante entière, valeur d’une autre variable entière, valeur d’une expression arithmétique � � opérateurs : « + », « - », « * », « / » (division entière) et « % » (modulo). parenthèses autorisées Environnement « expert » � Introduction de la notion informatique de variable � � « Une variable est un nom qui sert à repérer un emplacement mémoire, dont on peut faire évoluer la valeur, au fil du déroulement d’un programme ». (Claude Delannoy) 5 niveaux Niveau 2 � Langage assembleur � � � machine virtuelle avec une mémoire, un registre (accumulateur) et une unité de calcul arithmétique. spécification fournie Traduction automatique des algorithmes en langage assembleur � schémas de traduction fournis Environnement « expert » � Introduction de la notion informatique de variable � � « Une variable est un nom qui sert à repérer un emplacement mémoire, dont on peut faire évoluer la valeur, au fil du déroulement d’un programme ». (Claude Delannoy) 5 niveaux Niveau 3 � Ajout de la traduction binaire des instructions du langage assembleur � � spécification fournie La mémoire contient : � � des données des instructions Environnement « expert » � Introduction de la notion informatique de variable � � « Une variable est un nom qui sert à repérer un emplacement mémoire, dont on peut faire évoluer la valeur, au fil du déroulement d’un programme ». (Claude Delannoy) 5 niveaux Niveau 4 � Possibilité de manipuler des nombres flottants � � � constantes et variable, opérations arithmétiques spécifiques, instructions de conversion de type (entier ↔ flottant). Environnement « expert » � Introduction de la notion informatique de variable � � « Une variable est un nom qui sert à repérer un emplacement mémoire, dont on peut faire évoluer la valeur, au fil du déroulement d’un programme ». (Claude Delannoy) 5 niveaux Niveau 5 � Possibilité d’écrire certaines parties du programme directement en langage assembleur. Cahier des charges � Fonctionnalités attendues � Construction d’algorithmes � � � Exécution d’algorithmes � � � Exécution « pas-à-pas » Affichage et export de traces d’exécution Gestion d’une banque d’exercices � � � A la souris à partir de « briques de base » Environnement très contraint pour éviter les difficultés syntaxiques Ajout, suppression et modification d’exercices Format à définir Fonctionnalités optionnelles � Gestion collaborative de la banque d’exercices � Détection de doublons, gestion de la sécurité, etc. � Recommandation d’exercices � Gestion d’une banque d’environnement didactique � � � etc. Détection de doublons, gestion de la sécurité, etc. Aussi simple que la gestion des exercices Questions ? Questions ? Contact Sébastien Guérif [email protected] Bureau :B 212, Poste : 3116