Depuis cette rentrée 2019, les élèves en classe de seconde ont un cours obligatoire intitulé Sciences numériques et technologie (SNT), alors que les élèves en classe de première, puis lors de leur passage en classe de terminale, peuvent opter pour un enseignement intitulé Numérique et sciences informatiques (NSI).
Dans le cadre de ces cours, les élèves auront naturellement des exercices à faire qui consisteront, entre autres, à écrire des programmes en Python (version 3 ou supérieure), le langage retenu par l’éducation nationale. Néanmoins, notamment à cause de leur interface, ces programmes renvoient une image désuète de l’informatique, en décalage avec celle véhiculée par les smartphones, très populaires auprès des jeunes.
Cette dépêche présente un outil dédié à la création d’exercices modernes de programmation, c’est‑à‑dire des exercices reflétant les nouveaux usages de l’informatique, apparus avec la popularisation des smartphones. Cet outil confère à ces exercices une forme nouvelle propre à stimuler l’intérêt des élèves pour ces cours de SNT/NSI, en faisant le lien entre l’informatique telle qu’abordée dans ces cours, et celle à laquelle ils sont habitués de par l’utilisation de leur smartphone.
Sommaire
- Avant‑propos
- Principales caractéristiques
- L’exercice côté enseignant
- L’exercice vu de l’élève
- Conclusion
Avant‑propos
Malgré l’émergence de certains langages, les exercices de programmation n’ont guère évolué ces dernières décennies. Par exemple, un exercice de résolution d’(in)équation du 1er degré — un classique, les cours de programmation étant généralement assurés par des professeurs de mathématiques — ressemble à ça :
C’est assez austère, et l’ergonomie laisse à désirer, car il faut ressaisir systématiquement l’ensemble des paramètres, même si l’on ne veut en changer qu’un seul. Il est certes possible d’améliorer l’interface ou de gérer les paramètres en tant qu’arguments passés au programme lors de son invocation. Toutefois, cela devient rapidement trop compliqué à programmer par rapport à la finalité de l’exercice, et l’on ne pourra jamais obtenir le confort d’utilisation que confère une interface graphique.
Les interfaces graphiques sont justement le type d’interface auquel les jeunes sont habitués. Ce sont elles que l’on retrouve dans la majorité, voire la totalité des applications qu’ils utilisent sur leur smartphone. Ils n’ont probablement jamais eu affaire à une interface textuelle telle que celle mise en œuvre dans l’exemple ci‑dessus.
Supposons que l’on modifie l’exercice ci‑dessus pour lui donner la forme suivante :
Sous cette forme, l’exercice est bien plus attrayant et d’une bien meilleure ergonomie que sous la précédente forme.
Cette dépêche ne porte pas sur la pertinence de cette approche, dont vous trouverez un lien vers une description plus détaillée en fin de dépêche, mais sur la solution technique qui permet de la mettre en œuvre.
Cette solution s’appuie sur le toolkit Atlas, qui a l’avantage d’être simple à mettre en œuvre, facile à utiliser et léger (un lien vers le site dédié à ce toolkit, ainsi qu’un autre détaillant son API, sont disponibles en fin de dépêche). Cependant, bien que ce toolkit simplifie considérablement la manipulation de l’interface, cela reste trop compliqué pour des débutants en programmation.
C’est sur la couche logicielle qui permet l’écriture d’exercices adaptés au niveau de l’élève, notamment concernant la manipulation de l’interface, que cette dépêche va s’attarder. Pour cela, une série de fichiers, tirée d’un exercice mettant en œuvre cette couche logicielle, va être passée en revue. L’adresse du dépôt GitHub qui contient la totalité des fichiers constituant cet exercice est donnée en fin de dépêche.
Cette couche logicielle est disponible sous forme d’un paquet PyPi nommé edutk (voir en fin de dépêche). Néanmoins, il sera embarqué directement dans l’archive contenant l’exercice, et non pas installé via un « pip install …
», ceci dans le but de simplifier l’installation de l’exercice. Cela vaut également pour le paquet relatif au toolkit Atlas (atlastk).
Principales caractéristiques
Par rapport à sa forme classique, un exercice mettant en œuvre cette solution présente les particularités suivantes, dont les trois premières, gérées par le toolkit Atlas, ne seront pas détaillées dans cette dépêche, contrairement aux trois dernières.
Utilisation d’une interface graphique
Dans la plupart des cas, un exercice consistera en l’écriture d’un programme avec lequel l’utilisateur peut interagir. Ces interactions se feront alors via une interface graphique, plus précisément une interface Web. Lorsque l’exercice est lancé, un navigateur Web s’ouvrira automatiquement pour afficher l’interface de l’exercice.
Accès facile depuis Internet
Dès son lancement, l’exercice est automatiquement et instantanément accessible de n’importe quel dispositif (smartphone, tablette…) connecté à Internet et équipé d’un navigateur Web moderne. Cet accès est facilité par le fait de ne pas avoir :
- à déployer le code de l’exercice sur un serveur distant ;
- ni à configurer un routeur pour ouvrir et rediriger un port ;
- ni à configurer le dispositif pour le connecter au réseau local.
Il suffit, en effet, que l’ordinateur hébergeant l’exercice ainsi que le dispositif avec lequel on veut y accéder soient tous les deux connectés à Internet.
Multi‑utilisateur
Comme indiqué, l’exercice est une application Web, qui plus est facilement accessible de n’importe où sur Internet. De ce fait, il est possible que plusieurs personnes accèdent, simultanément, au même exercice. Cette situation ne pose pas de problèmes, les mécanismes nécessaires à sa gestion étant mis en œuvre de manière automatique et totalement transparente.
Gestion simplifiée de l’interface
L’exercice pourra être élaboré de manière à ce que les instructions nécessaires à la manipulation de l’interface soient adaptées au niveau de difficulté de l’exercice. Au besoin, ces instructions pourront être aussi simples à utiliser que les classiques input(…)
et print(…)
.
Internationalisation simplifiée
Bien que les identifiants des différents objets, classes, fonctions… que l’élève doit implémenter peuvent être adaptés à la langue de l’élève, l’accès à chacun de ces éléments, pour le créateur de l’exercice, se fera via un identifiant unique. Ainsi, le code constituant le cœur de l’exercice n’aura pas à être adapté à chacune des langues pour lesquelles l’exercice sera disponible.
Redirection des messages d’erreur
Comme l’application s’exécute dans un navigateur Web, l’élève n’aura pas forcément le réflexe de regarder la console à partir de laquelle l’application est lancée lorsque son code lève une exception. Il ne comprendra donc pas pourquoi son application ne fonctionne pas. C’est pourquoi, par défaut, les exceptions s’affichent dans une boîte de dialogue. Cependant, parce que cela est plus pratique durant l’élaboration de l’exercice, il sera possible de rétablir l’affichage des erreurs en console.
L’exercice côté enseignant
L’exercice proposé à titre d’exemple est une version un peu plus évoluée de l’habituelle Hello World! (probablement pas le premier exercice que l’on va soumettre à un débutant), qui ressemble à ceci :
Comme annoncé, chacun des fichiers constituant l’exercice va maintenant être passé en revue.
workshop/Body.html
<div style="display: table; margin: 50px auto auto auto;">
<fieldset>
<div style="display: table; margin: auto auto 10px auto;">
<input id="input"
placeholder="$NameToDisplay$"
data-xdh-onevent="Submit"
maxlength="15"/>
</div>
<fieldset class="hidden"
style="border: 1px solid; padding: 10px;box-shadow: 5px 5px;"
id="output"/>
</fieldset>
</div>
Ce fichier contient l’interface HTML de l’exercice. Il n’y a rien de particulier, mis à part l’attribut data-xdh-onevent
, qui sera abordé plus tard, ainsi que le contenu de l’attribut placeholder
($NameToDisplay$
), avec la présence du symbole $
qui sera expliquée par la suite. On retrouvera la valeur des différents attributs id
dans d’autres fichiers.
On peut remarquer que l’on a à disposition toute la puissance du CSS. On peut ainsi facilement modifier l’apparence de l’interface en rajoutant des couleurs, des formes, des animations, etc. ; bref, tout ce qui est susceptible de renforcer l’aspect ludique de l’exercice.
workshop/Head.html
<style>
.hidden {
display: none;
}
</style>
Le contenu de ce fichier est placé dans la section head
de l’interface HTML. Il contient généralement la définition des règles CSS utilisées dans le fichier workshop/Body.html
ou, plus généralement, utilisées par l’application.
workshop/core.py
Ce fichier contient les différents éléments nécessaires au fonctionnement de l’exercice et en constitue le cœur.
import edutk as _
from edutk import Core
On importe le paquet destiné à faciliter l’écriture de l’exercice, paquet à l’API duquel on accédera via l’identifiant _
. L’objet Core
, lui, est rendu directement accessible.
F_HELLO = "Hello"
_.defineUserItem(globals(), "uf", F_HELLO)
On déclare là une fonction que l’élève devra définir et par laquelle le concepteur de l’exercice accédera via la fonction d’identifiant ufHello
. Celle-ci n’appelle pas directement la fonction définie par l’élève, mais en retourne une référence. Grâce à cela, l’identifiant utilisé pour cette fonction dans le prototype exposé à l’élève sera différent de celui donné ici (ufHello
). On verra plus tard comment cela est mis en œuvre.
_.setEnums(globals(),"label",("MissingName", "NameToDisplay"))
Cela définit une classe label
avec deux membres MissingName
et NameToDisplay
avec, comme contenu, la chaîne de caractères contenant leur nom. Concrètement, la fonction ci‑dessus est équivalente à :
class label:
MissingName = "MissingName"
NameToDisplay = "NameToDisplay"
Cela sert à définir les libellés qui devront être traduits.
Notez le membre NameToDisplay
qui correspond à la valeur de l’attribut placeholder
, les $
en moins, présent dans le fichier workshop/Body.html
.
Les différentes chaînes de caractères définies ici vont, comme on le verra plus bas, être utilisées comme clefs d’un dictionnaire, et doivent donc être uniques. Le fait que ces chaînes de caractères reprennent le libellé du membre auquel elles sont affectées n’est qu’un moyen de garantir cette unicité, vu que chaque membre au sein d’une classe doit porter un identifiant unique. Le but est en fait d’obtenir l’équivalent d’un enum.
def clear():
_.dom().setLayout("output", "<span/>")
Cela définit une première fonction de l’API à utiliser par l’élève dans la réalisation de l’exercice. Cette fonction procède à l’effacement de la zone d’affichage, output
étant la valeur de l’attribut id
associé à cette zone dans le fichier workshop/Body.html
, en écrasant son contenu par la chaîne de caractères <span/>
. L’objet retourné par la fonction dom()
, ainsi que la méthode associée setLayout(…)
, sont fournis par l’API du toolkit Atlas, dont vous trouverez une description détaillée dans la documentation.
Notez que, comme vous le verrez par la suite, l’identifiant donné à la fonction (clear
) n’est pas l’identifiant par lequel l’élève accédera à cette fonction. Ce sera également le cas pour toutes les autres fonctions de l’API destinée à l’élève.
def display(text):
output = _.Atlas.createHTML()
output.putTagAndValue("h1", text)
_.dom().appendLayout("output", output)
Seconde fonction de l’API destinée à être utilisée dans l’exercice. En utilisant le toolkit Atlas, elle crée un arbre HTML constitué d’une balise h1
contenant le texte à afficher. Cet arbre est ensuite ajouté à la zone d’affichage (on retrouve le même identifiant output
que précédemment).
def _acConnect(c, dom):
dom.setLayout("", _.read(os.path.join("workshop", "Body.html"), c.body_i18n))
dom.focus("input")
Cette fonction sera appelée en interne à chaque lancement d’une nouvelle session utilisateur (on la retrouvera plus bas). Elle affiche le contenu du fichier workshop/Body.html
en remplaçant, grâce à la méthode _.read(…)
, le libellé $NameToDisplay$
(ainsi que toute chaîne de caractères délimitée par $
) par sa traduction contenue dans c.body_i18n
, que l’on verra par la suite. Les autres fonctions appartiennent à l’API du toolkit Atlas, dont la documentation vous fournira les détails.
Le paramètre c
est abordé plus loin, et le paramètre dom
est fourni par le toolkit Atlas. Ce sont ces deux mêmes paramètres qui sont passés à la fonction ci‑dessous.
def _acSubmit(c, dom):
input=dom.getContent("input").strip()
if (len(input)) != 0:
ufHello()(dom.getContent("input"))
dom.setContent( "input", "")
dom.removeClass("output", "hidden")
else:
dom.alert(c.i18n[label.MissingName])
dom.setContent("input", "")
dom.focus("input")
Cette fonction interne, que l’on retrouvera plus bas, sera appelée lorsque l’utilisateur valide sa saisie. C’est du Python pur jus accompagné d’appels à des méthodes du toolkit Atlas. On retrouve ici la fonction ufHello
définie plus haut. Elle permet d’appeler la fonction que l’élève doit définir dans le cadre de l’exercice. input
est la valeur de l’attribut id
du champ texte défini dans le fichier workshop/Body.html
.
Notez les deux paires de parenthèses utilisées lors de l’appel à ufHello
. La première sert à retourner une référence à la fonction définie par l’élève, la seconde à appeler cette fonction avec les paramètres adéquats.
L’objet label
est celui défini plus haut. Quant à c.i18n
, on le retrouvera plus bas.
def main(callback, globals, userFunctionLabels, title):
# Uncomment to display exceptions in terminal,
# instead of being displayed in an alert box.
#_.useRegularExceptions()
_.assignUserItems((F_HELLO,), globals, userFunctionLabels)
_.main( os.path.join("workshop", "Head.html"), callback, {
"": _acConnect,
"Submit": _acSubmit,
}, title
)
Cette fonction sert à lancer l’application qu’il y a derrière l’exercice.
callback
est la fonction à appeler pour créer un objet utilisateur. Cette fonction est appelée à chaque nouvelle session, et c’est la valeur retournée qui est passée en tant que paramètre c
aux fonctions _acConnect
et _acSubmit
ci‑dessus.
Le paramètre globals
contient l’objet retourné par la fonction globals()
lorsqu’elle est lancée par l’appelant.
userFunctionLabels
contient les liens entre les identifiants de fonctions tels que définis par le concepteur de l’exercice, et ceux, internationalisés, utilisés dans les prototypes exposés à l’élève. C’est grâce à cet objet que l’appel à la fonction ufHello()
va retourner la fonction définie par l’élève.
title
est la chaîne de caractères qui sera le titre de l’application ; son contenu est placé dans la balise title
de la section head
de la page HTML de l’application.
Durant l’élaboration de l’exercice, pour que les exceptions s’affichent dans la console, et non pas dans une boîte de dialogue, il suffira de décommenter l’appel à _.useRegularExceptions()
.
L’appel à _.assignUserItems(…)
permet d’indiquer les identifiants des fonctions, ou d’autres items (classes, variables…), que l’élève doit définir (ici, il n’y a que F_HELLO
). Ce seront ces identifiants qui seront utilisés dans les prototypes qui lui seront fournis.
_.main(…)
lance l’application. Le premier paramètre est le nom du fichier contenant les éléments à placer dans la section head
de la page HTML de l’exercice, en l’occurrence le fichier workshop/Head.html
, dont le contenu a été détaillé précédemment. Le troisième paramètre permet d’associer une action à une fonction. La chaîne vide correspond à l’action qui est appelée lors du lancement d’une nouvelle session et qui est ici associée à la fonction _acConnect(…)
précédemment définie. La chaîne Submit
correspond à l’action telle que définie par la valeur de l’attribut data-xdh-onevent
du fichier workshop/Body.html
, et est ici associée à la fonction _acSubmit(…)
précédemment définie.
workshop/fr.py
import workshop.core as _
Importe le fichier workshop/core.py
détaillé ci-dessus, dont l’API est rendu accessible via l’identifiant _
.
class _Core(_._.Core):
i18n = {
_.label.MissingName: "Veuillez saisir un prénom !"
}
body_i18n = {
_.label.NameToDisplay: "Prénom"
}
def __init__(self, dom):
_.Core.__init__(self, dom)
Une instance de l’objet _Core
va être créée lors de chaque nouvelle session. Le concepteur de l’exercice peut y placer toutes les données nécessaires au fonctionnement de cet exercice. Le membre i18n
contient les traductions des messages affichées par l’application et le membre body_i18n
, les traductions des chaînes de caractères délimitées par un $
présentes dans le fichier workshop/Body.html
.
efface = _.clear
affiche = _.display
Ces deux lignes créent des alias entre les identifiants des fonctions de l’API destinée à être utilisée par l’élève (définies dans workshop/core.py
) et les identifiants par lesquels l’élève appellera ces fonctions.
def go(globals):
_.main(lambda dom: _Core(dom), globals, {_.F_HELLO: "afficheSalutations"}, "Atelier de programmation")
Fonction appelée à la fin du code écrit par l’élève.
Le premier paramètre de l’appel à _.main(…)
est un callback qui sera appelé à chaque nouvelle session et qui devra fournir une instance d’un objet contenant les éléments propres à cette session. Ici, ce callback retourne une instance de la classe _Core
précédemment définie, dom
étant un objet créé et utilisé par le toolkit Atlas. globals
doit contenir le résultat de l’appel à globals()
à partir du code de l’élève. Le troisième paramètre est le titre de l’exercice.
workshop/en.py
import workshop.core as _
class _Core(_.Core):
i18n = {
_.label.MissingName: "Please enter a first name!"
}
body_i18n = {
_.label.NameToDisplay: "First name"
}
def __init__(self, dom):
_.Core.__init__(self, dom)
erase = _.clear
display = _.display
def go(globals):
_.main(lambda dom: _Core(dom), globals, {_.F_HELLO: "displayGreetings"}, "Programming workshop")
Il s’agit simplement de la version anglaise du fichier précédemment décrit.
L’exercice vu de l’élève
L’objet de tous les fichiers de la précédente section est de ne donner à manipuler par l’élève qu’un seul fichier, le plus concis possible. C’est pour cela que cette section contraste par sa brièveté avec la précédente.
Version française
Contenu du fichier fr.py
situé à la racine du dépôt.
from workshop.fr import *
Importation du fichier workshop/fr.py
(voir ci‑dessus) avec accès direct à son API.
def afficheSalutations(nom):
# début du code à saisir par l’élève
efface()
affiche("Bonjour, " + nom + " !")
affiche("Bonne journée, " + nom + " !")
# fin du code à saisir par l’élève
go(globals()
On voit que l’identifiant de la fonction à définir par l’élève est afficheSalutations
, comme déclaré dans le ficher workshop/fr.py
, et non pas ufHello
, qui est déclaré dans le fichier workshop/core.py
. De la même manière, c’est efface()
et affiche(…)
qui sont utilisés et non pas clear()
et erase(…)
.
Version anglaise
Contenu du fichier en.py
situé à la racine du dépôt.
from workshop.en import *
def displayGreetings(name):
erase()
display("Hello, " + name + "!")
display("Have a good day, " + name + "!")
go(globals())
Dans cette version anglaise, dans laquelle on importe workshop.en
à la place de workshop.fr
, c’est displayGreetings(…)
, erase()
et display(…)
qui sont respectivement utilisés à la place de afficheSalutations(…)
, efface()
et affiche(…)
.
Conclusion
edutk est considéré comme étant en version bêta de par son API. Cette API est, en effet, amenée à évoluer dans le but d’aboutir à un outil qui puisse être utilisé par les futurs titulaires du CAPES d’informatique, qui devrait voir le jour en 2020, pour créer leurs propres exercices. On peut aussi envisager de faire évoluer cet outil de manière à ce qu’il puisse être utilisé par les élèves des classes de terminale ayant choisi l’option NSI pour créer, à titre d’exercice, des exercices pour leurs petits camarades des classes de première et seconde.
En complément du contenu de cette dépêche, ceux qui désirent approfondir leur compréhension du fonctionnement et de la mise en œuvre de cet outil trouveront, en fin de dépêche, deux liens pointant sur des exemples d’exercices plus sophistiqués.
Toutes les personnes qui désirent utiliser cet outil, notamment celles qui officient actuellement dans les cours de SNT/NSI, sont, naturellement, les bienvenues. Conscient que beaucoup d’entre elles n’ont été que peu ou pas formées dans le domaine de la programmation, je me ferai un plaisir de les assister autant qu’il m’est possible dans leur utilisation de cet outil.
Merci à toutes celles et tous ceux qui, notamment en apportant des corrections ou en suggérant des modifications, ont contribué à l’amélioration du contenu de cette dépêche.
Aller plus loin
- Exercice de résolution d’une (in)équation du premier degré, avec une interface en mode texte (107 clics)
- Le même exercice, avec une interface graphique (127 clics)
- Le toolkit Atlas (77 clics)
- Son API (33 clics)
- De l’intérêt de moderniser les exercices de programmation (122 clics)
- Le dépôt GitHub de l’exercice (50 clics)
- Le paquet « edutk » sur PyPi (62 clics)
- La paquet du toolkit Atlas (« atlastk ») sur PyPi (31 clics)
- Quelques autres exemples d’exercices basés sur cet outil (58 clics)
- Une série d’exercices autour d’un jeu (53 clics)
# bravo... sauf pour l'excès de camelCase
Posté par tala . Évalué à 4.
Excellente initiative !
Je me permets une remarque superficielle sur la forme :
j'essaye personnellement de présenter de bonnes habitudes de rédaction de code python à mes élèves.
Par conséquent, je préférerais leur fournir des fonctions utilitaires dont les identifiants respectent les conventions de nommage en python et non en camelCase.
Je vais étudier de plus près ces outils que vous partagez généreusement.
[^] # Re: bravo... sauf pour l'excès de camelCase
Posté par Claude SIMON (site web personnel) . Évalué à 1.
Merci !
J'étais passé à coté de la PEP dédiée.
Ceci dit, pour autant que je sache, dans le cadre des cours de SNT/NSI, on ne cherche pas à initier les élèves à Python en particulier, mais à la programmation en général. Du coup, respecter les conventions de nommage Python n'est pas aussi important que ça, car si un élève décide, plus tard, d'utiliser un autre langage, il est probable qu'il aura affaire à d'autres conventions de nommage.
Maintenant, cet outil est totalement agnostique concernant les conventions de nommage ; on peut donc mettre en œuvre, dans les exercices, celle de son choix.
N'hésitez pas à m'en faire part si vous rencontrez des problèmes, ou si vous avez des remarques/suggestions/questions…
Pour nous émanciper des géants du numérique : Zelbinium !
# Que la déesse Athena soit louée ...
Posté par Christophe B. (site web personnel) . Évalué à 7.
Au 21e siècle l'éducation nationale s'est enfin rendu compte que l'informatique était une matière à part entière …
et non pas un hobby de prof de math
Comme quoi tout arrive, m'enfin saluons quand même le principe même si il a 20 ans de retard.
Et je salue aussi le choix de python
Par curiosité, j'aimerais savoir le cheminement d'un telle décision, qui comment etc …
Si quelqu'un du ministère de l'éducation nationale avait internet (après une telle annonce plus rien ne m'étonne …) et de plus suivait LinuxFr (même remarque …) j'aimerais savoir comment cela se passe.
Promis je lirais sans faire de remarque désobligeante sur cette excellllllente institution.
[^] # Re: Que la déesse Athena soit louée ...
Posté par _kaos_ . Évalué à 2.
Salut,
Perso, j'ai eu des cours d'informatique dédiés bien avant ce choix -certes, en classes préparatoires-, à une époque où le langage python n'existait pas et le prof inventé pour l'occasion nous produisait des cours tellement peu intéressants que j'ai pris sa place de temps en temps pour expliquer ce que je comprenais (ce qui veut dire pas grand chose, avec un regard en arrière).
Le Pascal était à la mode. La limitation mémoire également.
Là ou je veux en venir c'est que ce n'est pas le langage qui va faire l'objet d'intérêt. Certes,
python
va "faciliter" les choses par rapport àpascal
. Mais ne mènera pas aux mêmes soucis.Mon apprentissage de l'informatique, c'est par exemple :
Déjà, avec ces deux problèmes classiques, il y a de quoi meubler pas mal de temps.
Matricule 23415
# NSI
Posté par magnolia . Évalué à 10. Dernière modification le 24 novembre 2019 à 11:07.
Ce post est une réponse à une remarque faite plus haut par Christophe B.
Je suis professeur de mathématiques et d'informatique en classes préparatoires et j'ai suivi l'arrivée de la spécialité NSI en classe de première. Voici quelques éléments de réponse à Christophe :
Il n'y a jamais eu de CAPES ou d'Agrégation d'informatique. Autrement dit, l'éducation nationale n'a jamais recruté de professeur d'informatique. Les professeurs d'informatique actuels sont donc des personnes qui ont appris l'informatique sur le tas et qui ont choisi d'enseigner l'informatique parce qu'ils en avaient envie. En pratique, cela a souvent été les professeurs de mathématiques.
La situation est en train de changer et un CAPES d'informatique a été créé. La première session aura lieu au printemps 2020. On aura donc officiellement les premiers professeurs d'informatique l'année prochaine. C'est fondamental car il y a beaucoup de lycées où la NSI n'est pas proposée car il n'y a pas de profs pour l'enseigner.
Le programme de NSI est essentiellement une adaptation au lycée de ce qui se fait en classes préparatoires depuis 2013. En prépa, on enseigne l'informatique avec Python et certains prennent l'option informatique et font du OCaml (langage impératif et fonctionnel développé par l'INRIA). Au programme de l'option NSI de première, il y a :
Bref, il y a selon moi l'essentiel pour bien débuter la programmation et avoir les bases de l'algo et les structures de données élémentaires.
Pour la NSI, il y a selon moi un superbe ouvrage qui a été publié cet été : https://www.amazon.fr/Spécialité-Numérique-sciences-informatiques-programmes/dp/2340033640 . Jean-Christophe Filliâtre est prof de compilation à l'ENS Ulm et à Polytechnique. Les autres auteurs font partie du même labo de l'INRIA que J.C. Filliâtre. Donc il n'y a aucun soucis à se faire sur leur compétence en informatique. Il se trouve que pédagogiquement, leur livre est aussi très bon. Bref, je le recommande très fortement.
Pour ce qui est du post est des interfaces graphiques, je suis sceptique. Je suis prof dans une des meilleures prépa de France. Et je dois batailler en début d'année pour que les élèves comprennent qu'il y a une différence entre un print(a) et un return a. Écrire une interface graphique propre est un boulot de spécialiste et nécessite beaucoup de connaissances très spécifiques à la bibliothèque utilisée. Certes, c'est ici une bibliothèque très simple, qui permet de faire des input et des print plus jolis. Mais bon, je crois qu'il est plus important de savoir ce qu'est un tableau ou une table de hachage.
[^] # Re: NSI
Posté par magnolia . Évalué à 2.
Et pour rassurer Christophe : Oui, on a internet. ;-)
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 8.
Merci pour ces réponses, merci aussi de ne pas trop m'en vouloir pour ma mauvaise foi et mon cynisme.
J'ai une fille de 16 ans (oui je sais c'est dur … ) et sachez que j'essaye de suivre de près sa scolarité (dans la mesure ou elle me le permet :) )
Python a été abordé en secondes avec son prof de math et cela a été une catastrophe, elle m'en a parlé au début puis plus du tout. (c'est rarement un signe positif chez un ado … )
Ce n'est pas grave en soi, on peut vivre sans connaître la programmation, mais je trouve qu'aborder la programmation sous l'angle mathématique n'est pas la meilleure méthode, à mon avis.
Généralement les mathématiques ne déchaîne pas les foules, et je crains que la programmation risque d'être trop assimilée aux mathématiques. (vous connaissez l'expression jetez le bébé avec l'eau du bain … )
Par contre en faire une VRAIE matière peut améliorer les choses, après tout il y a bien du dessin, de la musique et du sport comme matière alors pourquoi pas un peu de programmation.
Comme pour les arts plastiques, la musique et le sport si l'on est pas doué pour ces matière au moins, on sait ce que c'est, cela devrait être pareil pour l'informatique.
A mon humble avis, c'est à l'école que nos enfants devraient découvrir beaucoup de matières, avec plus de travail manuels d'ailleurs.
Le problème c'est le planning assez (trop?) chargé de nos enfants, difficile de retirer quelque chose si l'on veut en ajouter.
La solution de la réforme actuelle, ou l'élève choisi ses spécialités c'est bien. Au moins il peut prendre des matières qui lui conviennent.
Mais ma fille ne pouvait pas prendre d'informatique sans les maths, certainement par manque de profs d'informatique et que cette matière est assuré par les profs de maths.
L'informatique l'intéresse mais pas les maths … et c'était sans appel
Un petit mot sur cette réforme :
Cela crée de fortes disparités dans les classes, ainsi se retrouvent dans le même classe des eleves avec 2h d'anglais par semaine, et donc un niveau moindre, mélangés avec d'autres qui ont choisi l'option Anglais littéraire (4h de plus) et donc un niveau plus elevé, voire beaucoup plus elevé.
Ainsi personne n'est content certains ont l'impression de réapprendre l'anglais, d'autre le sentiment qu'ils sont nul en comparaison, pendant ces 2 heures en commun.
Pour finir, je vois souvent des profs se débattre comme ils peuvent pour faire correctement leur boulot et assurer des cours intéressants. Ce n'est pas grand chose, mais je vous remercie chaleureusement.
C'est gràce à cette foi que cela fonctionne, pour l'instant, le problème c'est que tout à une limite (sauf la bétise humaine mais c'est un autre débat)
[^] # Re: NSI
Posté par raum_schiff . Évalué à 1.
Témoignage intéressant.
La programmation abordée directement et essentiellement avec les math peut rebuter beaucoup d'élèves qui ne se destinent pas à cette filière, l'approche du prof est alors cruciale.
Le fait que la seconde soit une période charnière du lycée fait que pas mal d'élèves se sentent déclassés. La réforme récente a ses bons côtés sur ce point, avec le système d'options qui permet une "pré-orientation" s'affirmant ensuite en première/terminale.
Mais la réforme a tendance à surcharger les cours et faire courir les profs pour remplir l'emploi du temps de l'élève. Les deux se retrouvent alors à jongler avec des salles et des horaires comme si ils étaient à la fac (ex: mon fils a des cours le samedi en plus de la semaine, et son prof commute entre 2 lycées pour satisfaire le système d’options des classes à sa charge).
Pour le sentiment de déclassement, en ce qui concerne mon fils, son lycée propose des cours de soutient en groupe restreint suivant les matières, ce qui l'aide beaucoup.
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 2. Dernière modification le 25 novembre 2019 à 11:51.
Oui cela a été le cas pour ma fille, dégouté des maths, mais bon ce n'est pas grave, elle avait un choix assez large et a préférée un parcours plus littéraire ( ANGLAIS LIT. + SES + HLP )
Mais je trouve que c'est dommage.
Cela ne m'étonne pas du tout, beaucoup d'options ne pouvait être maintenu dans son lycée et je comprends pourquoi. vu le nombre d'option à croiser avec les profs etc …
J'avais même écris un truc quand je révisais mon php ( http://t3.chrislyon.fr/h2021/index.php ) et déterminer en fonction des options choisi si c'était possible dans son lycée. (le code est crado mais si cela en intéresse quelques uns … )
OK mais ma fille est de l'autre coté, avec l'anglais littéraire (4h / sem) + les séries mangas en VO (même plus STFR maintenant ), comme quelque uns elle a un bon niveau en anglais et quand elle se retrouve en classe d'anglais "normal" elle a l'impression de revenir en arrière.
L'erreur vient du fait de mélanger plusieurs groupes avec des niveaux différents, personne ne sera satisfait les éléves comme les profs, sans parler de la difficulté de faire cours avec des groupes avec de telle différence de niveaux : eleves avec 2h/sem et eleve avec 2h + 4 h d'anglais littéraire soit 6h par semaine.
Le système d'options de cette réforme a du bon, l'eleve peut choisir des matières qui lui conviennent
, mais nécessite encore des réglages.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 4. Dernière modification le 24 novembre 2019 à 12:12.
L'outil présenté fait une jolie présentation, pour certains élèves en collège/lycée ça peut être intéressant pour juste les intéresser à la chose (les élèves en prépa sont généralement un peu plus motivés et costauds que la moyenne). L'aspect accessible via Internet est un plus (quand c'est prêt c'est directement utilisable), et un moins (il faut quelqu'un qui sache le mettre en place et bénéficier d'un hébergement).
Pour afficher facilement des dialogues de base, il y a easygui (voir le
multenterbox
pour des dialogues de saisie multi-champs).Pour aller plus loin niveau interface graphique on tombe quasi obligatoirement sur une boucle événementielle… il y a des outils qui essaient de simplifier, par exemple PySimpleGUI
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par magnolia . Évalué à 7. Dernière modification le 24 novembre 2019 à 12:36.
Concernant l'idée d'une bibliothèque graphique :
Bref, pour intéresser des élèves le temps d'un ou deux TPs, pourquoi pas. Baser tous les exercices de NSI sur une telle bibliothèque, je pense que c'est une erreur grave.
On doit déjà se coltiner Pyzo parce qu'un quidam trouvait cela sympa, alors que toute personne qui n'a pas le cerveau retourné utilise Jupyter notebook.
Bref, je crois en la liberté pédagogique de l'enseignant. C'est à lui, en fonction de ses élèves, d'adapter son cours pour qu'il passionne et qu'il soit efficace. Pour échanger des exercices entre profs, le mieux est donc de n'utiliser que les fonctions de base. Ensuite, le prof mettra l'enrobage qu'il souhaite si cela lui semble important.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 3.
Je suis un des quidam qui a trouvé Pyzo sympa, par rapport à IDLE. Il faut voir que l'explosion de Jupyter notebook, et surtout des offres d'hébergement, est relativement récente et est très rapide. Quand on revient 2 ou 3 ans en arrière…
Et, si on va au delà de l'algorithmique ou de l'utilisation de Python dans un notebook en remplacement d'un matlab, par exemple pour comprendre ce qu'est un module, son chargement, les espaces de noms… je ne suis pas sûr que Jupyter soit le plus adapté.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par magnolia . Évalué à 3.
Désolé pour mon ton un peu emporté.
Il est évident que n'importe quoi semble être un excellent choix à côté de IDLE. Voici mes griefs par rapport à Pyzo :
- Ce n'est même pas dans Anaconda. J'aimerais d'ailleurs bien savoir pourquoi.
- À part dans l'éducation, je n'ai jamais vu personne l'utiliser.
Je ne me souviens plus de l'étendu de l'utilisation de ipython/jupyter en 2013. Mais je trouve dommage qu'on ne change pas. En prépa, c'est dicté par l'École Centrale qui utilise Pyzo dans les épreuves au concours.
Alors que j'ai été consultant en calcul scientifique et que je m'estime plutôt débrouillard en informatique, j'ai du changer le code source du Pyzo disponible sur ma distribution Ubuntu (18.04 LTS) pour qu'il puisse utiliser mon Python Anaconda (version 3.7). Pour l'instant mes élèves utilisent Jupyter notebook, mais on va devoir basculer sur Pyzo. Je sens à 10 km la queue pour que j'installe ce truc sur les configurations parfois exotiques de mes élèves.
Jupyter est devenu le standard. Je pense qu'il serait bien que l'éducation nationale utilise les standards.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 3.
Anaconda est très pratique, bourré d'outils facilement disponibles, mais il faut faire très attention, ça mange très rapidement des Go sur le disque ; si tu multiplies par chaque élève/étudiant qui installe dans son répertoire perso, tu vas exploser ton stockage (à moins d'avoir de la déduplication, compte ~5Go par étudiant dès qu'ils vont avoir fait quelques installations en plus).
Que Pyzo ne soit utilisé que dans l'éducation nationale, on s'en fout, c'est juste un IDE qui comporte suffisamment d'outils sans noyer l'utilisateur débutant avec tout plein d'options. S'ils savent identifier une zone d'édition, une zone de shell et des outils de debugging, ils les retrouveront ensuite dans d'autres environnements plus riches.
Q? As-tu déjà eu à installer Jupyter¹ en local pour pouvoir travailler sans connexion réseau, sur Linux / Windows / MacOS ?
Dans le cadre d'un concours, si ton poste accède à Jupyter par Internet sur un serveur, c'est plus difficile pour éviter les tricheries. Avec un Python local + libs + Pyzo, tu restes dans un contexte plus contrôlé.
¹ Piste: vaut mieux passer par conda :-)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par magnolia . Évalué à 1.
Je suis d'accord que la distribution Anaconda a tendance à s'installer et prendre de la place. Je n'ai jamais utilisé miniconda, mais j'imagine que cela permet de s'installer sans prendre trop de place.
Je ne suis pas administrateur dans notre lycée, mais je crois qu'ils ont utilisé Anaconda sans aucun problème. Bien évidemment, les élèves n'ont pas à installer Anaconda sur leur compte perso puisqu'il est déjà présent sur la machine.
Je n'ai pas encore beaucoup utilisé Pyzo car c'est la première année que j'enseigne le Python et j'ai commencé les TPs avec Jupyter. Mais comme l'École Centrale utilise Pyzo, je vais migrer vers Pyzo. Des collègues m'ont expliqué qu'ils faisaient ça parce qu'ils étaient bien obligés et ils m'ont dit avoir pas mal de problèmes avec Pyzo, des bugs notamment. Je n'ai aucune expérience à ce sujet, mais:
1 - Je préfère toujours utiliser des outils utilisés par le maximum de personnes. Cela permet le plus souvent d'avoir des outils les moins buggés possibles.
2 - Je ne comprends pas pourquoi Pyzo n'est pas dans Anaconda.
Toutes les personnes que je connais et qui enseignent en école d'ingénieur utilisent Jupyter. C'est le cas notamment à Polytechnique. Au passage, il est possible d'utiliser Python et OCaml dans Jupyter alors que Pyzo gère juste Python. Bref, quand on met à côté Pyzo et Jupyter, on ne parle pas du tout de la même taille de communauté et de support. Cela suffit pour moi à préférer Jupyter à Pyzo. Mais je suis d'accord qu'en 2014, lors du lancement de l'épreuve Python à Centrale, ipython/jupyter ne devait pas être au stade où il est aujourd'hui.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2. Dernière modification le 24 novembre 2019 à 18:49.
Communauté
Il faut voir que iPython puis Jupyter, ont reçu de gros financements (européen, pui de je ne sais plus quelle fondation), et sont fortement soutenus du côté communautés scientifiques (entre autre les biologistes). Ça a donné un foisonnement, le découplage front-end/backend de calcul (puis support de nombreux autres langages que Python), des apports d'interactivité dans les notebooks, etc.
C'est sur que Pyzo ne joue pas dans la même court. Après, Pyzo est open-source et a un développement régulier avec plusieurs développeurs qui produisent des releases, ce n'est pas non plus un projet individuel. Il faut remonter les bugs, et si on est capable de les corriger alors remonter les corrections. Pour le manque dans Anaconda… je dirais bien "y'a qu'à" le packager, mais vu qu'il y a déjà Spyder, est-ce que c'est utile hors enseignement ?
Installation
Il est probable que les écoles d'ingénieur et les universités/IUT ont accès à des ressources informatiques que n'ont pas les établissements scolaires collèges et lycées, d'où l'orientation dans ces établissements vers des installations plus faciles à appréhender pour les gens qui gèrent les parcs (déployer une application sur chaque poste… souvent Windows… ils savent faire). En ce sens Python + qq libs + Pyzo sont simple à installer.
Déployer une installation de Jupyter¹ sur un serveur central nécessite déjà de disposer d'un serveur qui tienne la route et du réseau qui va avec. Et bien sûr d'un administrateur système capable de mettre tout ça en place (gestion des comptes, des droits, installation de ce que les enseignants demandent…) et de le maintenir (être disponible en cas de problème…). Les classes préparatoires étant généralement dans des Lycées, je ne suis pas sûr qu'elles bénéficient de ce genre de services.
Sur Pyzo
Au passage, Pyzo permet de définir plusieurs environnements Python d'exécution, il peut utiliser celui installé en standard, un autre installé via Conda… et switcher facilement de l'un à l'autre. Et il dispose d'outils qu'il faut faire activer aux étudiants via les menus (entre autre le Workbench – combiné à l'exécution pas à pas c'est quand même bien pratique pour voir les évolutions au fur et à mesure de l'exécution).
¹Note: Anaconda permet de déployer très simplement Jupyter pour une utilisation personnelle (ce qui devient plus difficile c'est la mise en ligne multi-utilisateur). Ça peut être une piste à donner à des étudiants ou enseignants qui veulent l'installer simplement sur leur ordinateur personnel.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par magnolia . Évalué à 1.
Quand je parle de Jupyter, je pense essentiellement à une config où le serveur et le client tourne sur la même machine. Je ne pensais pas à une architecture où il y a un serveur central.
Pour Pyzo, je ne l'ai jamais vraiment utilisé. Mon premier contact s'est soldé par une modification du code source pour que le Pyzo qui vient avec Ubuntu 18.04 LTS tourne avec le Python 3.7 de mon Anaconda. Maintenant, ça marche, mais je n'ai pas eu le temps d'essayer. Pas mal de collègues ralent contre Pyzo et disent que c'est buggé. Mais je ne sais pas si quels bugs ils rencontrent ni si l'installation faite pas les admins est propre.
Pour les élèves qui veulent installer Python sur leur machine, je recommande Anaconda. On a besoin de numpy et matplotlib et vu que les élèves galèrent déjà avec Anaconda (certains téléchargent la version 32 bits car ils ne savent même pas que leur machine est 64 bits), il est hors de question de faire cela à la main. Ce serait plus simple pour moi si Pyzo était disponible avec conda.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2.
Si ça peut servir (en ligne pour ne pas occuper inutilement de la place dans un poly info/algo)… https://perso.limsi.fr/pointal/python:installation:accueil
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 4. Dernière modification le 24 novembre 2019 à 17:43.
C'est le problème quand on ne mutualise pas sur un serveur certaines choses, quand l'informatique sera reconnu comme une VRAIE matière peut être aurez vous du matériel décent et des ressources.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2.
Remarque en méconnaissance du contexte. Je n'ai indiqué nulle part que les étudiants utilisaient Anaconda¹. On a pour les TPs des postes à installation automatique, la version X.Y de Python fourni de façon standard et les packages tiers dont on a besoin (dont numpy, matplotlib, Pyzo), installés par les administrateurs système.
Je vois bien Jupyter dans les cadres :
Après, pour réaliser un développement logiciel plus complet, avec une structuration en différents modules / packages, éventuellement un aspect GUI, des modules tiers à installer… l'utilisation de Jupyter devient problématique.
¹ Par contre, sur un petit cluster de calcul que je gère, on oriente les personnes qui ont des besoins spécifiques hors des paquets de la distrib vers une utilisation de miniconda/anaconda, d'où ce retour d'expérience (on a rapidement du augmenter les quota disques pour les home-directory des utilisateurs). Mais c'est dans un contexte labo de recherche, pas enseignement.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par magnolia . Évalué à 0.
Pour une utilisation plus poussée, PyCharm Community est très bien. Jupyter, c'est parfait pour travailler avec des données et visualiser. PyCharm me semble parfait pour faire du développement.
Du coup, j'ai du mal à trouver un intérêt à Pyzo.
En prépa, on fait de l'algo de base et on fait des graphes. C'est pour cela que Jupyter me semble la meilleure solution.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2.
PyCharm est déjà beaucoup trop riche et avec trop d'options, ça perd les étudiants qui débutent (mais très bien pour une formation plus poussée avec Python ou en développement pro).
Pour de l'enseignement des bases info/algo: Pyzo ou Thonny (ou IDLE ou Wing 101) — et en effet, suivant le contexte, Jupyter bien sûr.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par omc . Évalué à 2. Dernière modification le 24 novembre 2019 à 22:12.
IDLE est très moche mais il fait le job. Utiliser un outil minimaliste pour enseigner permet de se focaliser sur l'essentiel.
En tout cas, je suis à l'aise avec cet outil car IDLE évite beaucoup de confusions qui viennent tôt ou tard lorsqu'on utilise des éditeurs plus sophistiqués.
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2.
Ça n'est pas qu'une question d'esthétique… il n'affiche toujours pas les n° de ligne.
Je viens de voir qu'il s'est amélioré niveau panel de debug, mais il montre bien trop la machinerie Python (noms en xxx), ce qui est plutôt perturbant pour les débutants.
À la recherche d'un éditeur encore simple mais un peu plus puissant qu'IDLE, on avait utilisé à une époque WingIDE 101¹, puis on a switché vers Pyzo. J'ai vu Thonny arriver aussi plus récemment sur le même créneau de l'IDE pour l'enseignement.
¹ Version gratuite bridée d'un logiciel commercial.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 2.
Lire: noms en
__xxx__
.Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par omc . Évalué à 1.
Hello,
Dans le coin bas + droite, tu as le numéro de ligne (+ numéro de colonne) du curseur.
Là où tu y vois un problème, j'y trouve plutôt un intérêt :)
[^] # Re: NSI
Posté par lasher . Évalué à 4.
Parce que tu es passionné. On parle d'enseigner les bases de la programmation à une population qui sera très hétéroclite. J'enseigne en IUT GEII (génie électrique & info industrielle/embarquée), et certains sont excellents (ils finissent nos TP de 3h en 1h ou 1h30), et d'autres complètement à la ramasse (un seul exo, ou deux, en 3h, sur les 5 au total). Et là on parle de gens qui ont plus ou moins une appétence pour le sujet (au moins sur le papier).
[^] # Re: NSI
Posté par ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ (site web personnel) . Évalué à 2.
Chez nous — dans une petite filière anecdotique d'une université provinciale mineure, là où les administrateurs informatiques sont toujours compétents et l'herbe plus verte — l'interpréteur python par défaut est toujours en version 2 ce qui occasionne pas mal de soucis à nos étudiants, et l'IDE employée pour le développement est emacs+bash.
« IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 3.
python2 + emacs : il faut prévenir l'ONU, la quadrature du net, le ministère de l'intérieur, les droits de l'homme.
Emacs : C'est limite de la torture …
python3 + vi … c'est un minimum
Juste une idée lancée en l'air, si quelqu'un avait la bonté de me répondre si c'est réaliste ou totalement farfelu.
Au niveau de l'éducation nationale, ou même au niveau d'un rectorat et pourquoi pas d'un ensemble collège+lycée
N'est il pas possible de définir un ou plusieurs cahier des charges ? et de les communiquer ?
Le fossé entre les deux est il si grand que cela ?
[^] # Re: NSI
Posté par magnolia . Évalué à 1.
Je n'ai pas compris quelle est ta question. Est-ce que tu peux préciser ?
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 3.
Il y a des besoins d'un coté en outil pédagogique sur la programmation (éditeur, langage, … )
sur l'environnement de travail( serveur, poste … )
Et de l'autre coté des étudiants qui seraient peut être content de travailler sur un projet concret qui comblerait les besoins des enseignants.
Un produit comme scratch par exemple, permet de découvrir facilement certaines notions de programmations mais il me semble avoir lu dans ce site que cela posait beaucoup de problème de licence non libre.
Si le besoin existe d'un outil comme scratch, ne pourrait t il servir de projet pour des étudiants en informatiques ?
Les enseignants ont des besoins en ressources informatique et pour l'instant, j'ai l'impression, que l'on trouve soit des initiatives personnelles (que je salue au passage) soit des solutions propriétaires comme Microsoft.
Le logiciel libre est une matière première PHENOMENALE il faut juste faire l'effort d'apprendre a s'en servir, l'éducation nationale manque de moyen, les lycées manquent de moyens. Quand on est obligés de mettre 4 exempleaires par page A4 cela devient problématique. (surtout pour les parents qui ont la vue qui baisse)
Pourquoi ne pas utiliser des logiciels libres ?
certaines entreprises doivent payer pour mettre a la poubelle du matériel ou en recyclage, pourquoi ne pas le récuperer.
Est ce un problème d'échelle ? de décision politique ? d'autonomie ?
Chaque jour je vois ma fille porter un cartable de plus de 10Kg … et je regarde ma vieille liseuse Kindle (celle avec le clavier qui sert a rien … ) qui doit contenir plus de 300 livres.
On trouve des tablettes pour quelques dizaines d'euros …
Ou alors c'est pour ne pas faire sombrer l'édition de livre scolaire ? les fabricants chinois de cartables ?
Parfois j'aimerais comprendre … et avoir un avis de l'intérieur, tout en étant conscient que si la solution était simple, elle serait certainement mise en pratique … mais j'aimerais être convaincu quand même.
il y a une autre solution : on arrête de se voiler la face et on finance l'éducation nationale avec des pubs obligatoires d'un 1/4h en debut de journée dans les écoles après tout cela se fait dans certains pays "civilisés"
[^] # Re: NSI
Posté par lolop (site web personnel) . Évalué à 4.
Renseignes toi sur le coût environnemental des tablettes, sur les évaluation en retour d'expériences de leur utilisation pour l'enseignement. Tu en reviendras.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 3.
C'est possible mais j'attends que quelqu'un d'objectif et de sérieux fasse l'étude
mais pour la santé des gamins entre 15kg de sac et une tablette …
D'un point de vue environnement entre une douzaine de bouquins et une tablette … si cela se trouve c'est equivalent
[^] # Re: NSI
Posté par magnolia . Évalué à 6. Dernière modification le 25 novembre 2019 à 18:52.
Je crois que Scratch est libre. D'après le site, c'est du GPLv2.
Pour les logiciels libres, c'est exactement ce qui se passe en première en NSI : on y enseigne Python qui est libre. Pour l'environnement, il y a beaucoup de choix libres dont Jupyter.
En prépa, c'est pour le moment toujours Python avec quelques bibliothèques libres comme Numpy et Matplotlib. Pour l'option informatique, c'est en OCaml. Le tout est 100% libre.
Pour le programme, c'est vrai qu'on a un programme très orienté algorithmique. Cela me semble être un bon choix. Il y a certes eu des excés en prépa (langages reconnaissables et autres joyeusetés, fonctionnel beaucoup trop mis en avant à mon sens) mais ça se calme.
Si on veut faire des choses qui brillent en info, comme des GUI, le mélange de cours magistral/TP n'est pas taillé pour. Il faudrait faire de l'enseignement par projet. Mais c'est surement trop tôt au lycée et l'éducation nationale n'est pas taillée pour cela. Il y a aussi le problème fondamental du recrutement : il y a de moins en moins de candidats aux concours d'enseignement et le niveau baisse. Donc il va être à mon avis très difficile de recruter des jeunes profs d'informatique compétents. Ceux qui savent faire de l'info sont chassés par les entreprises. Bref, l'éducation nationale peine à recruter. Et des profs compétents, passionnés et passionnants sont nécessaires pour que la matière intéresse.
[^] # Re: NSI
Posté par anaseto . Évalué à 4.
D'un côté, moi j'aimais bien ça à l'époque, mais perso je trouve qu'autant d'algorithmique sans but concret, c'est pas une bonne chose pour la plupart.
Moi, tout le goût de l'informatique, je l'ai pris en découvrant le libre entre la première et deuxième année de prépas et en faisant des choses sur mon temps libre fin prépas début L3, à peu près dans l'ordre : apprendre Haskell (en période révision concours, hum) pour utiliser parsec et écrire un parseur pour un DSL pour poèmes, découverte de la communauté Haskell (un peu dans les nuages mais un minimum dans le concret), écrire un jeu de pendu, parser les METAR (rapport d'observation météo), utiliser un framework web Haskell, apprendre Perl et écrire des scripts divers pour de petits besoins, découverte de la communauté Perl très pragmatique (OO, fonctionnel, peu leur importe tant que ça marche : gros contraste avec la communauté Haskell), la communauté du libre aussi (bépo, emacs, vim, sh et unix, etc.), lire des blogs, linuxfr etc.
Le côté social et un aperçu des diverses communautés et leur charme à chacune est quelque chose à mon avis très important, ça donne vie à l'informatique, et j'en ai eu quasiment aucun aperçu pendant les cours (autre à la limite de ce qu'est la communauté informatique académique, mais même ça c'est surtout pendant la thèse). Jamais fait de gros trucs pendant les débuts (pas le temps à l'époque), mais tous ces petits trucs concrets m'ont permis d'associer des souvenirs positifs avec « informatique » malgré le côté totalement abstrait/asocial de l'enseignement reçu à côté. Même plus tard, pendant thèse etc, j'ai ressenti le besoin de faire à côté des trucs concrets à côté (de plus en plus gros), sans quoi j'aurais probablement perdu le goût de l'info. Connaître tout un tas d'algos de graphes, optims compilateur et que sais-je etc. si on arrive pas à utiliser ces connaissances d'une façon qui nous parle… comment dire, pour beaucoup de gens (dont moi), l'intérêt intellectuel en soi des algos n'est pas suffisant pour alimenter la motivation. Et se dire peut-être dans 5-10 ans je l'utiliserai, non plus.
Pas surprenant, en même temps, tant que le système d'affectation, indépendant des compétences, « on t'envoie à l'autre bout de la France, tu pourras peut-être revenir chez toi une fois que t'auras un ou deux enfants et donc plein de points » restera ce qu'il est. Ça attire ceux qui veulent un poste stable peu importe où, plutôt ceux qui ont la vocation, qui ont de bonnes chances d'être suffisamment déçus pour laisser tomber.
Enfin, pour ceux qui comme toi (si j'ai bien compris) veulent bien enseigner en prépas, c'est un peu plus facile (dossier puis les inspecteurs généraux font ce qu'ils veulent, donc en général ils regardent plutôt les compétences que le nombre d'enfants). Mais pour ça faut aimer l'esprit concours et les grandes villes avec une prépas, et c'est pas dit de trouver un poste dans sa région non plus.
[^] # Re: NSI
Posté par Christophe B. (site web personnel) . Évalué à 3.
C'est vrai que vous n'êtes pas aidé par l'éducation nationale, et même si je l'ai déjà dit dans ces colonnes
je vous tire mon chapeau pour votre courage votre foi dans le métier.
Pourquoi l'éducation nationale ne prend pas de vieux cons avec de l'expérience localement ?
J'aimerais bien enseigner mais vu que j'ai même pas de diplôme … à part un Bac ( +2 je l'ai eu avec 2 ans de retard ;) )
Bon même si j'ai réusi à former quelques petits jeunes en apprentissage, cela doit pas être facile avec des classes de 30 jeunes fous.
[^] # Re: NSI
Posté par benoar . Évalué à 7. Dernière modification le 24 novembre 2019 à 13:31.
Je suis d'accord. Je trouve même cette dépêche un peu trompeuse, Claude utilisant l'alibi du nouveau programme de lycée pour faire sa promo pour ses frameworks qui sont ses idées qu'il développe seul « envers et contre tous » depuis des années (voir son historique sur linuxfr). Ça peut être intéressant comme curiosité, mais proposer ça comme outil à faire connaître à tous les lycéens… bof bof.
[^] # Re: NSI
Posté par Claude SIMON (site web personnel) . Évalué à 1.
C'est tout le contraire. L'outil présenté dans cette dépêche est destiné à être utilisé par ceux qui élaborent les exercices, pas par les élèves auxquels sont destinés ces exercices.
Tout est fait pour rendre cet outil transparent pour les élèves. Dans le code que tape l'élève dans le cadre des exercices, à aucun moment il ne manipule l'API de la bibliothèque edutk, ni celle de la bibliothèque atlastk.
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: NSI
Posté par benoar . Évalué à 2.
Tu as dû mal lire la remarque de magnolia, ça n'est pas ce qu'il reprochait : il parlait bien du risque d'engager les profs dans cette voie.
Et moi en plus en tant qu'apprenant, j'aime bien aller voir ce qu'il y a derrière. Ça sera problématique à ce moment-là également.
[^] # Re: NSI
Posté par Claude SIMON (site web personnel) . Évalué à 2.
De quoi parles-tu exactement ? Le commentaire auquel tu réponds est ma réponse à ta propre remarque
…proposer ça comme outil à faire connaître à tous les lycéens…
, pour signaler que ce n'est absolument pas le cas.Et qu'est-ce qui serait moins problématique pour toi ? Un outil propriétaire développé par une multinationale qui en profiterait pour soutirer un maximum de données personnelles des élèves et des enseignants afin de les abreuver de publicités ?
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: NSI
Posté par lasher . Évalué à 4.
Au risque de paraître un peu condescendant plutôt que montant : je ne savais pas que tu étais encore au lycée. :-)
Plus sérieusement, on parle de faciliter la tâche d'un pédagogue pour le lycée. Est-ce que l'outil est bon ? Aucune idée. Il faudrait demander à un utilisateur qui a déjà pris en main ce cadriciel.
Cependant, il faut bien garder en tête qui est la cible : des jeunes de 14-18 ans en moyenne, qui auront un intérêt variable pour la matière. Si cet outil permet de faciliter l'apprentissage de la programmation (et pas seulement l'algorithmique), tant mieux. Le côté « moi je veux voir sous le capot », on ne l'a que rarement en réalité (mais ça arrive bien entendu).
[^] # Re: NSI
Posté par Claude SIMON (site web personnel) . Évalué à 2.
Les bibliothèques sont disponibles sur PyPi ; si Anaconda a un système équivalent de gestion de paquets, je veux bien créer ceux dédiés à ces bibliothèques, si cela peut en simplifier l'usage…
Les manipulations concernant l'interface graphique étant réduites au minimum, seul celui qui élaborera les exercices sera amené à gérer la séparation interface/traitement…
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: NSI
Posté par Claude SIMON (site web personnel) . Évalué à 2.
C'est pour que ce soit directement utilisable que je met à disposition un serveur gratuit et public, sachant que, comme on est sur du logiciel libre, on reste tout à fait libre (sans jeu de mot) de mettre en place son propre serveur…
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: NSI
Posté par Claude SIMON (site web personnel) . Évalué à 3.
Et bien justement, le but de l'outil présenté ici est de pouvoir créer des exercices qui permettent aux élèves de profiter de tous les avantages d'une interface graphique, sans pour autant qu'ils aient à la manipuler directement, et ce afin qu'ils puissent se concentrer sur l'objet de l'exercice (tableau, table de hachage…).
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: NSI
Posté par zerodeux (site web personnel) . Évalué à 2.
Un bouquin réalisé par des chercheurs d'un labo publique, diffusé sous licence propriétaire et par un biais lucratif, je tique.
Un lien Amazon, je tique.
Tic-tic.
[^] # Re: NSI
Posté par ZeroHeure . Évalué à 2.
quelqu'un veut-il plusser pour contrer un moinssage erroné de ma part ?
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
# Vu depuis la seconde
Posté par raum_schiff . Évalué à 9. Dernière modification le 24 novembre 2019 à 12:45.
Ce témoignage vaut ce qu'il vaut, il n'a pas de visée universelle et ne reflète qu'une expérience personnelle basée sur le témoignage d'un ado de 16 ans qui a bien voulu répondre à mes questions sur son temps libre du dimanche:
Mon fils est en seconde section littéraire, il fait du SNT avec son prof de math en utilisant : Thonny. La majorité de sa classe n'est ni portée sur les maths ni sur la programmation, et tous passent une partie de leur vie d'ado sur leurs smartphones.
Ils n'ont eut que très peu de difficultés à prendre en main l'IDE pour le côté IHM; pour ce qui est de la programmation le début d'année a été assez dur, mais il n'y a pas eut de décrochage et les concepts de base (variable, liste, opérateurs logiques, etc…) ont été compris, pour les fonctions et la création/importation de modules, c'est une autre histoire, le prof s'en charge; mais bon … c'est une seconde littéraire et ce n'est pas ce qu'on leur demande.
Les exercices restent basiques (chiffre de césar, équations simples), Le prof fournit un squelette et leur donne la partie de code sur laquelle ils doivent travailler.
Même si la console python reste austère, les entrées et sorties de leurs scripts et le fait d'utiliser un éditeur de texte ne les choque pas.
… Fin de la partie témoignage recueillit.
Même si l'initiative d'edukt est louable, je me pose la question sur la problématique soulevée en début de journal sur le REPL dont "l'ergonomie laisse à désirer" et "l'image désuète renvoyée".
L'éducation du SNT n'est IMHO pas là pour soutenir l'image de la technologie "véhiculée par les smartphones" (cette technologie est un métier en soi) mais de montrer la vérité derrière l'outil. Si l’élève veut ensuite orienter son parcours dans cette voie autant qu'il ne soit pas trompé sur la marchandise.
[^] # Re: Vu depuis la seconde
Posté par magnolia . Évalué à 7. Dernière modification le 24 novembre 2019 à 12:58.
Je suis parfaitement d'accord.
Et je trouve qu'il ne vaut mieux pas s'essayer aux interfaces graphiques, ou alors juste le temps d'un TP ou deux. Je pense même qu'utiliser ce petit framework est le meilleur moyen pour que certains élèves, qui parfois maitrisent les bases de SwiftUI ou l'équivalent Kotlin sous Android, nous jettent des pièces.
[^] # Re: Vu depuis la seconde
Posté par antigone . Évalué à -2.
Seconde litteraire?
ça n'existe plus depuis 45 ans !!!
[^] # Re: Vu depuis la seconde
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Il est probable que tu ne connaisses pas tous les systèmes scolaires du monde.
[^] # Re: Vu depuis la seconde
Posté par raum_schiff . Évalué à 2.
Il fait un ABIBAC si vous voulez tout savoir.
Et c'est loin d'être orienté technologie et/ou économie et/ou science … il ne reste donc que la littérature.
# Une présentation de Python au lycée
Posté par Francky (site web personnel) . Évalué à 4.
https://htmlpreview.github.io/?https://raw.githubusercontent.com/FranckCHAMBON/Python-Lycee/master/Python-Presentation/Python-Presentation.html
Je commence ce document pour faire de la formation. Je mise sur Jupyter, mais je présente aussi d'autres outils, en particulier sur tablette (on a ça dans notre région).
Pour la suite du contenu, ce sera quasi uniquement des carnets Jupyter…
Très intéressé par votre retour,
… un prof de maths, qui n'est pas enfermé dans le XIXs
[^] # Re: Une présentation de Python au lycée
Posté par Christophe B. (site web personnel) . Évalué à 5.
Pas mal c'est un bon début, il faudrait que je le lise plus en détail
Mais bon du point de vue de l'ado : python == math donc pour certain …
il faudrait peut être mettre des trucs plus fun que des maths, je sais c'est pas facile pour les débutants
Tu aurais le droit de l'utiliser en classe avec des publicités ? (question bète de parent … )
En plus Jupyter tu peu le mettre sur un VM ubuntu et travailler via navigateur, par contre je sais pas si c'est multi utilisateur, faudra que j'essayes.
Ah au fait : C# du coté des elfes ? dans le forum de linux.fr ? …
On a mis au bucher des héretiques pour moins que ça.
Non c'est bien connu, M$ vient du mordor.
Windows, l'os qui devait nous entrainer dans les ténèbres, finira en cendres …
NE PAS LIRE AVANT DREDI :
IMHO : de plus les devs C# ressemblent plus à des orcs qu'à des elfes non ?
[^] # Re: Une présentation de Python au lycée
Posté par magnolia . Évalué à 1. Dernière modification le 25 novembre 2019 à 18:59.
Mais pourquoi aurait on Python=Maths. Peux-tu préciser ce qui a dégouté ta fille ?
[^] # Re: Une présentation de Python au lycée
Posté par Christophe B. (site web personnel) . Évalué à 2.
Dans le cas de ma fille c'est plus un problème entre le prof et ma fille qu'autre chose
apparemment pas d'atomes crochus entre ces 2 êtres humains.
# Algorthmique != maths
Posté par Nicolas (site web personnel) . Évalué à 5.
J'ai eu la chance d'avoir une option informatique au lycée en seconde, première et terminale. Nous avons fait plusieurs mois d'algorithmie avant de "jouer" à taper nos programmes sur des pcs. C'était du Pascal.
Contrairement à la plupart des cas, notre prof était un prof de latin (en fait c'était un prof de français, latin, grec et informatique). Et quand on y réfléchit un peu c'est bien plus logique d'avoir un prof de latin qui enseigne l'informatique plutôt qu'un prof de maths. Ceux qui ont fait du latin comprendront bien je pense là où je veux en venir. Dans la démarche de traduction d'une phrase en latin, on fait la même démarche que dans la construction d'un algorithme complexe : on découpe en élément plus simple.
Le fait que ce ne soit pas un prof de maths a permis d'inclure tout le monde car les exemples d'algorithme n'étaient pas liés au maths.
Je suis peut-être un cas à part mais au collège j'ai eu une initiation à l'informatique par mon prof de latin aussi : au programme basic et télématique.
[^] # Re: Algorthmique != maths
Posté par lasher . Évalué à 3.
L'utilisation d'exercices pour faire des calculs mathématiques est clairement responsable du dégoût d'une bonne partie des 1ères années en fac dans les années 90 et 2000 en France (DEUG MIAS). Cependant, s'il faut creuser à un moment donné, s'il faut expliquer certains concepts tels que la complexité ou des notions de calculabilité, un prof de maths est a priori plus indiqué.
Ça se débat. L'intérêt du prof de maths est certains aspects de l'algorithmique (par exemple la récursion), mais ce n'est pas au programme d'info au lycée… ↩
# Quel sont les objectifs d'ISN ?
Posté par snowball (site web personnel) . Évalué à 4.
À la lecture des commentaires, je pense que l'incompréhension mutuelle provient de l'absence de définition claire des attendus de cet enseignement.
Que veut-on ?
1) Que des ados apprennent à utiliser des technologies plus ou moins caduques / pertinentes sous prétexte qu'elles leur rappellent les appareils addictifs du quotidien ?
2) Que les ados comprennent petit à petit les concepts informatiques utilisés par les objets qui finissent plus ou moins par contrôler leur vie ?
Sachant que ces deux activités sont totalement différentes et terriblement chronophages, il est difficile de vouloir faire un peu les deux.
Quand je lis le bulletin officiel décrivant le programme, quand j'écoute les vidéos de Gilles Dowek (https://youtu.be/8n7Z8fDKe3A) (un personnage central dans la conception d'ISN); je pense qu'il s'agit du point numéro 2. Donc j'aurai effectivement tendance à penser que le travail de Claude, même s'il part très probablement d'une bonne intention de sa part, est hors sujet voire contre productif.
J'ajouterai que personnellement, les meilleures séances informatiques que j'ai eu l'occasion de mener avec des élèves/étudiants étaient des activités débranchées écrites en langage naturel.
L'écran, l'interface, les couleurs etc ne concentrent pas les élèves sur des problématiques informatiques mais sur des aspects secondaires (l'IHM) qui, de toutes façons, constituent à elles seules un véritable métier ne répondant pas aux objectifs du 2).
Penser qu'on va intéresser les élèves aux concepts informatiques sous prétexte que le résultat affiché a un joli rendu est une erreur qui n'augure rien de bon sur la pertinence du contenu qu'on enseigne.
Enfin, concernant le fait qu'il faille évincer les maths de l'enseignement de l'informatique pour ne pas décourager des élèves de s'y lancer, je pense que c'est tromper les élèves sur la matière elle même. A moins bien sûr qu'on ne résume l'informatique à l'utilisation d'outils, à la conception d'IHM ou l'administration réseau.
[^] # Re: Quel sont les objectifs d'ISN ?
Posté par ZeroHeure . Évalué à 3.
je crois que tu oublies l'aspect web : c'est une facilité intéressante pour montrer le résultat partout.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
# Pydiderotlibs
Posté par cspaier . Évalué à 1.
Bonjour,
Merci pour la présentation de ce projet très intéressant.
Je me permets de mentionner le projet pydiderotlibs.
Des librairies adaptées à l'enseignement de python créé par des profs de math.
Ca facilite la création d'un traceur de courbe, d'un pong…
En gros les élèves peuvent faire:
[^] # Re: Pydiderotlibs
Posté par Claude SIMON (site web personnel) . Évalué à 3.
Bonjour !
Alors, avant que je n'oublie, quelques liens qui donnent sur un 404 :
entree
;README.md
du dépôt GiHub, les 4 derniers liens.À mon tour, je me permets de présenter une approche différente, mais qui me semble complémentaire, à savoir une bibliothèque qui s'inspire de la tortue du Logo. Ça permet aux élèves d'écrire quelque-chose du genre :
qui permet d'obtenir ça :
En combinaison avec l'outil présenté dans cette dépêche, on peut créer un exercice qui consiste à leur faire écrire, par exemple, quelque chose de ce genre :
J'en parle dans ce journal.
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: Pydiderotlibs
Posté par cspaier . Évalué à 0.
Merci pour les corrections!
Oui, coder avec tortue est intéressant également.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.