Une plateforme didactique pour la programmation

publicité
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
Téléchargement