A partir de Epsilon 20, le codage des couleurs a été modifié et notre version 1.0 ne fonctionne plus. Les versions ci-dessous ne fonctionnent que sur Epsilon 19 et moins. Le 3ème lien est la version 1.1 fonctionnelle sur toutes les versions de Epsilon.
A partir de Epsilon 20, le codage des couleurs a été modifié et notre version 1 ne fonctionne plus. Nous vous proposons 2 liens distincts. Seul le premier lien garanti de disposer de la dernière version de l’application, Ilyas étant désormais en charge de ce script. Le deuxième est un lien est un lien alternatif en cas de problème.
Etudiant au lycée Louis Pasteur de 2017 à 2020
Actuellement en cycle préparatoire à Polytech Marseille.
Coder, c’est un peu comme créer la vie en étant bourré, on fait souvent des erreurs.
Ce jeu a eu son heure de gloire sur Windows à la fin des années 90. Il s’agit d’un jeu de réflexion qui nécessitera parfois de compter un peu sur sa chance. Attention, il peut y avoir 42 mines à trouver !
Nous vous proposons 2 liens distincts, le premier est le lien vers la source du créateur de l’application, le deuxième est un lien alternatif en cas de problème. Seul le premier lien garanti de disposer de la dernière version de l’application.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
A partir de la rentrée 2019, le langage imposé pour les algorithmes en lycée est le Python. Les programmes des diverses matières scientifiques incluent des algorithme à étudier avec les élèves, il y en a bien évidemment dans le programme de spécialité NSI mais aussi dans le programme de mathématiques ou celui de physique.
Les calculatrices et leurs langages de programmation non standard
Jusqu’à présent le marché des calculatrices graphique était partagé entre deux marques commerciales : Casio et Texas Instrument. Chacune de ces marques a utilisé pendant près de 30 ans des langages de programmation semi propriétaire, dérivé du Basic mais pas compatibles entre eux, ce qui a durablement ralenti l’enseignement de l’algorithmique en lycée.
A partir de la rentrée 2019, le langage imposé pour les algorithmes en lycée est le Python.
Un langage de programmation simple d’usage est nécessaire pour l’écriture des programmes informatiques. Le langage choisi est Python, langage interprété, concis, largement répandu et pouvant fonctionner dans une diversité d’environnements. Les élèves sont entraînés à passer du langage naturel à Python et inversement.
Programme de mathématiques de seconde générale et technologique, 2019
Les calculatrices vont donc devoir se mettre à jour ou plus précisément les vieilles calculatrices utilisées par les aînés ne seront plus utilisables…
Cet article a pour objectif de vous présenter la programmation en Python sur la calculatrice Numworks.
Premier pas avec Python sur la NumWorks
Le site officiel de NumWorks propose un petit tutoriel, plutôt très bien fait intitulé Premiers pas avec Python.
Il propose surtout gratuitement 3 émulateurs, un émulateur sur le web vidéo-projetable en classe devant les élèves, une application android et une application IOS ce qui est remarquable, appréciable et devrait-être le cas de tous ces concurrents…
On peut même télécharger sur son ordinateur personnel cet émulateur ! Et comme tout ces logiciels sont sous licence CC-BY-NC-SA, vous pouvez les télécharger, les modifier, les redistribuer.
On peut toutefois regretter que l’algorithme proposé pour faire ces premiers pas en Python avec NumWorks soit une fonction Python récursive, cela n’est ni intuitif, ni adapté à un un public débutant.
Le code du script python proposé (la fonction récursive) est ci-dessous, vous pouvez copier / coller et tester ce script dans un autre environnement de développement Python. Ce programme très simple calcule la factorielle d’un nombre entier naturel.
from math import *
def factorial(n):
if n==0:
return 1
else:
return n*factorial(n-1)
Sur la calculatrice cela donne ceci en mode édition :
Et en exécution en mode console :
Aléas de la programmation fonctionnelle
Le paradigme programmation fonctionnelle a été créé explicitement afin de prendre en charge une approche fonctionnelle pure de la résolution des problèmes. Mais ce qui est déstabilisant avec la programmation fonctionnelle, c’est que quand on exécute un algorithme, il ne se passe rien à priori à l’écran.
Une fois le script précédent saisi dans la calculatrice,
Il faut l’exécuter
et on obtient ceci :
On arrive donc dans la console d’exécution de Python, mais le script ne semble avoir produit aucun effet, du moins on ne voit rien à l’écran.
L’utilisateur doit donc saisir factorial(10) pour calculer 10 ! c’est à dire 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1.
Il est alors tentant de réécrire le srcipt ainsi :
def factorial(n):
if n==0:
return 1
else:
return n*factorial(n-1)
print("Calcule la factorielle d un entier n")
m = int(input("n="))
print(factorial(m))
Mais cette pratique est a éviter avec les élèves, l’abus de print() et de input() peut perturber l’apprentissage de la programmation fonctionnelle.
Formation python sur la NumWorks en vidéo
La société NumWorks réalise régulièrement des vidéos très simple présentant la programmation python sur sa calculatrice. Voici la vidéo de la formation du 25 mars 2020.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
Ce tutoriel s’adresse à toute personne qui souhaite développer en python, et adapter ce code aux contraintes de la calculatrice NumWorks.
En octobre 2020, dans le cadre des projets de 1ère spécialité NSI, nos élèves doivent réaliser le projet suivant :
Proposer un utilitaire en python, il doit fonctionner sur la NumWorks. Aucune idée ? Regardez les utilitaires existants sur TI 83. Les plus ambitieux peuvent tenter de faire un jeu.
Exploiter uniquement la console python
Si vous comptez coder un projet en python, et que vous ne prévoyez de n’exploiter que la console python pour y exécuter des scripts, appeler des fonctions, afficher du texte, vous pouvez utiliser n’importe quel IDE pour développer votre projet :
Thonny, Python IDE for beginners (win, mac, linux)
Si vous choisissez un nouvel IDE, consulter un tutoriel peut vous permettre de bien démarrer et de gagner du temps ultérieurement.
Bien évidemment, il faut tenir compte de l’écran qui ne peut afficher simultanément que 29 caractères en largeur sur 11 lignes. test_affichage.py
Mais en exploitant au mieux ces valeurs, on peut néanmoins se débrouiller pour placer ce que l’on veut à l’écran, comme dans cet exemple polynome.py :
Coder en exploitant la couche graphique de la calculatrice
Si vous décidez d’exploiter la couche graphique de la calculatrice, vous pourrez donner libre cours à votre créativité, mais à ce jour malheureusement vous ne pourrez pas développer votre script sur l’IDE de votre choix.
L’interface de développement officielle de la calculatrice NumWorks
Vous pouvez utiliser le workshop officiel de la NumWorks, qui est resté figé en 2018 et qui ne propose clairement pas, en octobre 2020, une interface efficace pour développer un vrai projet.
Une interface de développement alternative pour la calculatrice NumWorks
Vous pouvez aussi utiliser l’IDE de Omega, l’OS alternatif de la NumWorks. Il présente plusieurs avantages, comme une coloration syntaxique plus agréable, une complétion automatique des scripts, une sauvegarde en ligne sur github…
1. Se créer un compte Github 2. Se connecter sur l’IDE python Omega avec ses identifiants python 3. Se familiariser avec l’interface. Signaler les bugs sur le serveur discordde l’équipe de développement de cet OS alternatif.
C’est d’ailleurs cette dernière interface que nous utiliserons en spé NSI pour porter nos projets sur la NumWorks. Comme elle est en version alpha, elle risque d’avoir quelques bugs, cela pourrait être assez drôle …
Avis aux lecteurs : enseignant, ou développeur indépendant : Si vous vous sentez de porter les bibliothèques propriétaires de la NumWorks (le module kandinsky, le module ion) sur PC, cela serait avec grand plaisir que nous les diffuserions et en ferions la promotion.
L’idée serait qu’un script écrit pour la NumWorks puissent fonctionner sur PC, à l’identique.
Quelques exemples de script exploitant la couche graphique de la calculatrice NumWorks :
Une roue Chromatique : chromac.py (ne marche pas sur le workshop, fonctionne sur la calculatrice et sur Omega IDE)
Un tetris, pour passer le temps en cours de maths : tetris.py
Capture d’écran de Tetris
Si les codes de ces scripts ne sont pas faciles à comprendre, des ressources proposées à la fin de cet article peuvent t’éclairer utilement.
Quelques tests graphiques très simples
test_draw.py pour comprendre comment afficher du texte, un peu n’importe où sur l’écran.
cercle.py, pour tracer un cercle, image obtenue avec un appel de la fonction cercle(120,120,42)
Les capacités de la calculatrice
Qui a volé la mémoire de la calculatrice ?
Avant d’attaquer le cœur du sujet à savoir le développement du projet python sur la calculatrice, il convient de lister les forces et faiblesses de cette calculatrice.
Si son ergonomie est admirable, son écran IPS lumineux et bien contrasté, son design moderne et convivial, l’application python est fort limitée.
32 Ko, c’est la taille totale et maximale de la somme des poids des scripts que vous pourrez stocker sur cette calculatrice. Il est impossible d’exploiter, pleinement la puce de 8 Mo soudée sur sa carte mère, la mémoire de stockage est gérée de manière non optimale. Espérons que cela changera.
32 ko, c’est la taille du tas python disponible pour exécuter les scripts. Si la calculatrice est dotée d’un CPU parfaitement dimensionné en terme de puissance, malheureusement seulement 32 Ko des 256 Ko de RAM de la puce ARM seront exploitables par votre script python. Là encore, le problème est lié à la jeunesse de cette calculatrice, et à la gestion de sa mémoire.
Il va falloir coder intelligemment, et si votre script dépasse les 8 Ko il y a de fortes chances qu’il refuse de s’exécuter.
Il ne va pas falloir oublier que tout objet créé par le programme va occuper bien plus de place en mémoire que la sommes des poids en octets de ses caractères ACSII…
Plus de 63 tutoriels vidéos sur la NumWorks et l’utilisation des couches graphiques. Très didactiques, ces vidéos peuvent mettre vous aider dans la compréhension du langage python et des bonnes pratiques.
Quelques vidéos incontournables
Exercice « Machine à sous »
Jeu pour apprendre les drapeaux
Plateau et pièces d’un jeu d’échecs
Le jeu Mastermind en Python
Programmons le jeu Snake en Python sur la Numworks !
Programmons le jeu 2048 en Python sur la Numworks !
Jeu du Pendu sur Numworks et Ti 83 Edition Python
Transformez votre Numworks en panneau LED défilant
Jeu de réflexion « Carré magique » pour la NUMWORKS
Programmons un jeu Démineur en Python sur la Numworks !
Les bibliothèques de scripts python
Voici quelques bibliothèques de scripts python optimisés pour la NumWorks. La plupart des scripts fonctionneront sur le Workshop de NumWorks, pour certains scripts il faudra les tester sur la calculatrice.
Si vous ne trouverez pas beaucoup de script pour la NumWorks sur le site https://tiplanet.org/, vous y trouverez par contre une source d’inspiration sur ce qui a déjà été fait, et ce qu’il est possible de faire…
Tester, tester, tester
Il convient lors du développement d’un projet de le tester régulièrement sur l’appareil sur lequel il doit finalement tourner.
Pour cela il faudra transférer le script sur la calculatrice.
Ce tutoriel vous guidera pour faire ceci depuis le workshop. Il est également possible de le faire depuis l’IDE Omega. Dans les deux cas, il faudra le faire depuis le navigateur Google Chrome.
Quelques petits scripts bien utiles
Lorsqu’une flèche est pressée, déclencher une action
from ion import keydown
def move():
while not keydown(5):
if keydown(0):
pass #appeler ici une fonction
elif keydown(3):
pass #appeler ici une fonction
elif keydown(1):
pass #appeler ici une fonction
elif keydown(2):
pass #appeler ici une fonction
sleep(0.120)
Une coloration qui respecte l’OS
Ce code vérifie si votre calculatrice NumWorks utilise Epsilon, l’OS officiel de la NumWorks ou Omega, l’OS amélioré.
try:
get_keys()
os = (192,53,53)
except:
os = (255,183,52)
La variable os contiendra désormais la couleur par défaut l’OS. Ceci permet de colorer l’interface de l’application python en respectant le code couleur de la calculatrice. Nous utilisons cet astuce sur le Tetris.
Un menu simple à adapter
# Script Menu simple sans appel à une fonction
choix = 0 # Il est toujours utile d'initialiser une variable
# Le menu à afficher
print("Vous aimez la spé NSI ?")
print("1. Non (deconseille)")
print("2. Oui")
print("9. Quitter le programme")
# Le choix a faire
while choix > 2 or choix < 1 or choix != 9:
choix = int(input("\n=>"))
# Le test conditionnel pour le menu
if choix == 0:
print("Mauvaise reponse")
elif choix == 1:
print("Bonne reponse")
else:
print("Au revoir")
Un menu qui appelle des fonctions python
#version 2020
def fonction1(): # def définie une fonction.
print("="*20)
print("Vous avez fait le choix 1, excellent choix")
print("="*20)
return True
def fonction2():
print("="*20)
print("Vous avez fait le choix 2, vous allez rater votre vie")
print("="*20)
return True
def menu():
choix = 0
while choix!=9:
print("Vous aimez la spé NSI ?")
print("1. Oui")
print("2. Non") # ** Si vous ajoutez un choix au menu
print("9. Quitter le programme")
choix=int(input())
if choix==1:
fonction1()
elif choix==2: # ** Vous devrez ajouter un elif comparable à celui-ci
fonction2()
elif choix==9:
print("="*20)
print("Au revoir !")
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
Le site https://nsi42.net/ héberge les projets web de nos élèves. Codé par un ancien élève, ce site propose un jeu de piste à travers une interface en ligne de commande…
En classe de première
En classe de première, les élèves réalise un premier site web de quelques pages en février, et ils s’initient aux protocoles HTTP, HTTPS, FTP à travers ces projets.
C’est l’occasion de leur faire découvrir les langages HTML et CSS.
En classe de terminale
En classe de terminale, les élèves réalisent un premier site web dans lequel ils doivent intégrer des modules imposés et des modules librement choisis en octobre.
L’objectif est alors d’approfondir leurs connaissances en JAVASCRIPT.
Plus tard dans l’année, ils peuvent utiliser cet espace web pour mener à bien un projet centré sur les bases de données, et ce frotter ainsi aux langages PHP et SQL.
Découvrir le site nsi42.net
Le site https://nsi42.net/ sera peut-être pour vous une découverte de l’ASCII Art et qui sait, peut-être que la console accepte les commandes Linux !
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
Cet article est un tutoriel exemple. Ceci est le paragraphe introductif de l’article, il faut particulièrement le soigner car il s’affiche dans l’article et dans les pages qui listent les articles. Ce paragraphe doit faire 3 à 4 lignes maximum, sur un écran en full HD sans zoom excessif. Il ne doit contenir que texte, pas de titre ni d’image et on évitera de mettre des liens, du gras ou de italique dans ce paragraphe .
Structurer son article avec des titres
Les titres de niveau 2 en html sont encadré par une balise <h2> ouvrante et une balise </h2> fermante. WordPress génère automatiquement le code html requis, il suffit de modifier le type ou le style du bloc, et pour cela la barre d’outil de mise en forme des blocs de WordPress est d’une grande utilité.
La technique pour aligner à droite des images vous sera expliqué un petit peu plus bas, mais elle n’est pas sans poser des problèmes.
Une fois de texte transformé en titre, on peut ajuster le niveau de titre. On notera d’ailleurs qui est possible de positionner des images à droite d’un paragraphe de texte, image qui ont pu être importé au moyen d’un simple copier / coller.
Sous titres d’un article
Les articles seront structurés uniquement avec des titres de niveau 2. Il est exclu d’utiliser des éléments tels que la coloration du texte, du souligné, du fluo, ou des séparateurs pour ne pas détruire la charte graphique du site. On évitera d’abuser des styles tels que le gras ou l’italique.
On peut utiliser le bloc citation simple
La beauté est dans les yeux de celui qui regarde.
Oscar Wilde
ou le bloc citation en exergue
Tout le monde dans ce pays devrait apprendre à programmer un ordinateur, parce que ça vous apprend à penser.
Steve Jobs
mais il ne faut abuser ni de l’un, ni de l’autre. Le style CSS de ces blocs est de la responsabilité du webmester, qui l’ajuste en écrivant du code CSS dans une feuille de style. Il ne faut donc utiliser aucune astuce manuelle pour forcer un rendu artificiel qui casserait la charte graphique.
Publier un code avec coloration syntaxique
Il me suffit de cliquer sur le signe +, et de chercher et choisir Code Mrror Block dans la liste des blocs proposés. Le thème graphique ne doit pas être modifié, par contre il faut indiquer le langage sur lequel appliquer la coloration syntaxique.
Un exemple avec du code HTML
<! -- La coloration syntaxique -->
Un site internet de référence poue débuter en HTML <a href="https://www.w3schools.com/">w3schools.com</a>
Un code HTML avec une coloration syntaxique automatique
Un exemple avec du code CSS
body{
margin: 0;
padding : 0;
font: 18px "Lucida Sans Unicode", sans-serif;
color: #424242;
}
Un exemple avec du code python
print("Hello, World!")
Pour l’instant, le code python ne peut être exécuté, mais des recherches sont menées pour y arriver à terme.
Du code en ligne, dans le texte
Le code python ci-dessus utilise la fonction print() native de python, celle ci permet d’afficher dans la console d’exécution un texte, en l’occurrence ici le traditionnel Hello, World!.
Ainsi, en utilisant la fonction en savoir plus de la barre d’outil de WordPress, on peut ajouter du code en ligne, comme dans l’exemple ci-dessus.
Respecter le droit d’auteur sur les images
Il est interdit de copier et d’insérer une image :
fabriquer soit même ces images, à partir d’éléments graphiques sans copyright
prendre soi même ses photos
L’insertion des images dans un article peut-être un peu technique notamment si on essaye de le faire flotter à gauche ou à droite. A vous de tester.
Ajouter un fichier .py à un article
Si votre projet est un projet python, vous devrez d’un part insérer et commenter des petites portions de code en utilisant Code Mrror Block présenté précédemment, mais aussi déposer l’intégralité de votre projet, le fichier .py à la fin de votre article.
Pour des raisons de sécurité, il n’est pas possible de déposer tel que un fichier .py, il va falloir compresser ce fichier .py avec 7zip, logiciel gratuit et open source.
Sur Windows 10, un simple clic-droit permet de réaliser cette compression
Le fichier .7z peut alors être déposé dans l’article via un simple glisser déposer et si vous n’y arrivez pas déposez le au préalable dans la médiathèque puis ajoutez le dans l’article depuis la médiathèque.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
Labomep est un exerciseur de mathématiques en ligne, gratuit et facile à prendre en main. Il est utilisé par de nombreux enseignants français pour faire progresser leurs élèves. Nous avons conçu labohelp pour aider les élèves à résoudre les petits problèmes qu’ils rencontrent parfois sur la labomep.
Labomep vous connaissez ?
Considéré comme un instrument de torture mathématique par certains, source d’angoisses pour d’autres, labomep est un formidable outil pour s’entraîner sur les automatismes du point de vue du prof.
Et lorsque les élèves comprennent qu’on va les faire travailler et que l’on peut contrôler finement ce travail, vérifier par exemple s’il est fait au dernier moment, vient alors le moment où certain tentent de trouver toutes les parades pour passer à travers, éventuellement en inventant des bugs imaginaires.
Certains enseignants renoncent alors à utiliser cet outil alors que 90% des problèmes rencontrés par les élèves sont imaginaires ou facilement dépassables.
Le site internet labohelp va vous aider à résoudre les principaux problèmes rencontrés par les élèves.
Le cahier des charges
L’idée de base est donc de proposer un chemin de résolution aux principaux problèmes rencontrés sous labomep. Il s’agit dans 90% des cas de problèmes annexes, qui n’ont rien de mathématique. Et quand c’est un problème en mathématiques, un peu d’autonomie de la part de l’élève et quelques prises d’initiatives peuvent aider ou suffire.
Le format flash étant obsolète et déprécié, labohelp n’aidera pas les élèves à résoudre leur problème avec le plugin flash dans le navigateur web.
Ainsi par un jeu de question / réponse, l’assistant aide l’utilisateur (un élève) à résoudre tout seul son problème.
Si le problème n’est pas résolu, il invite l’utilisateur à contacter son professeur mais des précautions sont prises pour éviter les abus.
Les URLs générées sur labohelp étant uniques, si un enseignant reçoit une demande d’élève qui se trouve dans la base de donnée, il lui suffit de copier / coller cette adresse et de l’envoyer à l’élève.
Ainsi à un élève vraiment de mauvaise fois qui ne trouverait pas la page de connexion on pourrait lui envoyer cette adresse : http://labohelp.nsi.xyz/index.php?ref=12
Laborobot répond à vos questions sur labohelp !
Pour rendre l’outil plus agréable, un petit robot est conçu. Un concours interne à l’équipe de développement du site (votation truquée bien évidemment) décide que le robot élu sera le croquis numéro 6.
Le croquis est donc réalisé au propre avec quelques améliorations graphiques, puis numérisé au format PNG et on y applique la charte graphique du site générée tout à fait aléatoirement sur coolors.co.
Tout est désormais en place pour développer un site amusant et coloré !
Choix techniques
L’idée étant de profiter de ce projet pour apprendre / progresser dans la maîtrise des langages HTML / PHP il est décidé de réaliser un unique script PHP, qui servira toutes les pages en interrogeant un annuaire de questions / réponses.
Après quelques tentatives infructueuses (car peu pertinentes) avec un fichier CSV, nous partons sur un fichier XML qui nous permettra de structurer facilement l’annuaire de questions / réponses.
L’unique script php de 400 lignes est ainsi capable de générer les nombreuses pages de ce labohelp. D’après nos informations, il y aurait plus de 42 pages, et on me souffle dans l’oreillette qu’il y aurait des pages cachées (6 à la date du 11 février 2020), ainsi qu’un menu caché qui sera accessible ultérieurement ! Sauras-tu les retrouver ?
Bien évidemment, une feuille de style CSS habille le site internet, vous pouvez d’ailleurs le visiter sans la feuille de style ou avec celle-ci. Pour désactiver la feuille de style, il suffit de rajouter &style=no à la fin de l’adresse de la page visitée.
Minimaliste mais efficace, la feuille de style intègre également la gestion des écrans ayant une petite résolution avec la déclaration CSS
@media screen and (max-width: 1000px) {
}
Du coup si l’écran de l’ordinateur offre une résolution très faible, le navigateur affichera la version pour smartphone du site.
Le site labohelp, pour qui ?
Pour les élèves qui se noient dans un verre d’eau
Pour les élèves qui cherchent une réponse à un problème courant
Pour les enseignants qui souhaitent l’utiliser avec leurs élèves
Il est possible de faire évoluer l’annuaire de questions / réponses, si vous êtes enseignant et que vous souhaitez l’enrichir contactez-nous.
Si vous êtes un élève, la réponse à vos problèmes sur labomep se trouve peut-être sur labohelp.nsi.xyz, nous ne répondrons à aucun message concernant un bug sur labomep envoyé par un élève.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
Le programme enseigné en spécialité NSI est défini par le Ministère de l’Éducation nationale et de la Jeunesse. Ce programme est commun à tous les lycées, il est librement consultable en ligne.
A noter :
Un élève curieux qui lirait le programme pourrait penser qu’il est complexe, notamment la lecture des éléments du programme, mais il s’agit d’un biais cognitif, lire le programme de spécialité maths avec le même regard naïf permet de faire le même constat, et il est tout aussi erroné.
Préambule
du programme de classe de 1ère NSI
L’enseignement de spécialité de numérique et sciences informatiques du cycle terminal de la voie générale vise l’appropriation des fondements de l’informatique pour préparer les élèves à une poursuite d’études en les formant à la pratique d’une démarche scientifique et en développant leur appétence pour des activités de recherche.
L’objectif de cet enseignement général est l’appropriation des concepts et des méthodes qui fondent l’informatique, dans ses dimensions scientifiques et techniques. Il s’appuie sur l’universalité de quatre concepts fondamentaux et la variété de leurs interactions :
les données, qui représentent sous une forme numérique unifiée des informations très diverses : textes, images, sons, mesures physiques, sommes d’argent, etc.
les algorithmes, qui spécifient de façon abstraite et précise des traitements à effectuer sur les données à partir d’opérations élémentaires ;
les langages, qui permettent de traduire les algorithmes abstraits en programmes textuels ou graphiques de façon à ce qu’ils soient exécutables par les machines ;
les machines, et leurs systèmes d’exploitation, qui permettent d’exécuter des programmes en enchaînant un grand nombre d’instructions simples, assurent la persistance des données par leur stockage et gèrent les communications. Y sont inclus les objets connectés et les réseaux
À ces concepts s’ajoute un élément transversal : les interfaces qui permettent la communication, la collecte des données et la commande des systèmes
Cet enseignement prolonge les enseignements d’informatique dispensés à l’école primaire, au collège en mathématiques et en technologie et, en seconde, l’enseignement commun de sciences numériques et technologie. Il s’appuie aussi sur l’algorithmique pratiquée en mathématiques en seconde.
Il permet de développer des compétences :
analyser et modéliser un problème en termes de flux et de traitement d’informations ; décomposer un problème en sous-problèmes, reconnaître des situations déjà analysées et réutiliser des solutions ;
concevoir des solutions algorithmiques ;
traduire un algorithme dans un langage de programmation, en spécifier les interfaces et les interactions, comprendre et réutiliser des codes sources existants, développer des processus de mise au point et de validation de programmes ;
mobiliser les concepts et les technologies utiles pour assurer les fonctions d’acquisition, de mémorisation, de traitement et de diffusion des informations ;
développer des capacités d’abstraction et de généralisation
Cet enseignement a vocation à multiplier les occasions de mise en activité des élèves, sous des formes variées qui permettent de développer des compétences transversales :
faire preuve d’autonomie, d’initiative et de créativité ;
présenter un problème ou sa solution, développer une argumentation dans le cadre d’un débat ;
coopérer au sein d’une équipe dans le cadre d’un projet ;
rechercher de l’information, partager des ressources ;
faire un usage responsable et critique de l’informatique.
La progression peut suivre un rythme annuel construit autour de périodes spécifiques favorisant une alternance entre divers types d’activités.
Cet enseignement contribue à l’acquisition des compétences numériques qui font l’objet d’une certification en fin de cycle terminal.
Comme tous les enseignements, cette spécialité contribue au développement des compétences orales à travers notamment la pratique de l’argumentation. Celle-ci conduit à préciser sa pensée et à expliciter son raisonnement de manière à convaincre. Elle permet à chacun de faire évoluer sa pensée, jusqu’à la remettre en cause si nécessaire, pour accéder progressivement à la vérité par la preuve. Si ces considérations sont valables pour tous les élèves, elles prennent un relief particulier pour ceux qui choisiront de poursuivre cet enseignement de spécialité en terminale et qui ont à préparer l’épreuve orale terminale du baccalauréat. Il convient que les travaux proposés aux élèves y contribuent dès la classe de première.
Démarche de projet
Un enseignement d’informatique ne saurait se réduire à une présentation de concepts ou de méthodes sans permettre aux élèves de se les approprier en développant des projets.
Un quart au moins de l’horaire total de la spécialité est réservé à la conception et à l’élaboration de projets conduits par les élèves.
Les projets réalisés par les élèves, sous la conduite du professeur, constituent un apprentissage fondamental tant pour la compréhension de l’informatique que pour l’acquisition de compétences. En classe de première comme en classe terminale, ils peuvent porter sur des problématiques issues d’autres disciplines et ont essentiellement pour but d’imaginer des solutions répondant à l’expression d’un besoin ; dans la mesure du possible, il convient de laisser le choix du thème du projet aux élèves eux-mêmes. Il peut s’agir d’un approfondissement théorique des concepts étudiés en commun, d’une application à d’autres disciplines telle qu’une simulation d’expérience, d’un travail sur des données socioéconomiques, du développement d’un logiciel de lexicographie, d’un projet autour d’un objet connecté ou d’un robot, de la conception d’une bibliothèque implémentant une structure de données complexe, d’un problème de traitement d’image ou de son, d’une application mobile, par exemple de réalité virtuelle ou augmentée, du développement d’un site Web associé à l’utilisation d’une base de données, de la réalisation d’un interprète d’un mini-langage, d’un programme de jeu de stratégie, etc.
La gestion d’un projet inclut des points d’étape pour faire un bilan avec le professeur, valider des éléments, contrôler l’avancement du projet ou adapter ses objectifs, voire le redéfinir partiellement, afin de maintenir la motivation des élèves.
Les professeurs veillent à ce que les projets restent d’une ambition raisonnable afin de leur permettre d’aboutir.
Modalités de mise en œuvre
Les activités pratiques et la réalisation de projets supposent que chaque élève ait un accès individuel à un équipement relié à Internet.
Un langage de programmation est nécessaire pour l’écriture des programmes : un langage simple d’usage, interprété, concis, libre et gratuit, multiplateforme, largement répandu, riche de bibliothèques adaptées et bénéficiant d’une vaste communauté d’auteurs dans le monde éducatif est à privilégier. Au moment de la conception de ce programme, le langage choisi est Python version 3 (ou supérieure). L’expertise dans tel ou tel langage de programmation n’est cependant pas un objectif de formation
Éléments de programme
Si vous souhaitez lire l’intégralité du programme officiel, vous pouvez le télécharger sur le site eduscol.education.fr Une copie au format .pdf est disponible ci-dessous dans l’éventualité ou le lien précédent est brisé.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
En spécialité NSI, on étudie principalement le langage de programmation Python, dans lequel on écrit les algorithmes traité en classe, ainsi que le langage SQL qui permet d’interroger une base de donnée. Les projets réalisés par les élèves leurs permettent de découvrir et de s’amuser avec du HTML, du CSS, du JavaScript. La découverte des systèmes d’exploitations est l’occasion de s’initier au BASH.
A noter :
L’expertise dans tel ou tel langage de programmation n’est cependant pas un objectif de formation, en spécialité NSI on découvre des langages, chacun est libre d’approfondir ces connaissances lors de la réalisations des projets.
Les différents langages découverts ou approfondis
Python
Un langage de programmation est nécessaire pour l’écriture des programmes. Les lycées français ont choisis le langage Python, qui est à la fois simple d’usage, interprété, concis, libre et gratuit, multiplateforme et largement répandu.
# Python 3
print("Hello NSI !")
HTML
Aujourd’hui, de plus en plus de nos actions se passent par le Web, qui est aux centres de nos vies. Il faut donc pour cela expliquer aux spécialités NSI, son organisation, ses complexités, et à commencer par l’HTML. Ce n’est pas vraiment un langage, car il fait le lien entre plusieurs langages, mais il est l’élément central pour le fonctionnement des pages Web comme celle que vous êtes en train de regarder.
<strike class="physique">La Physique c'est bien</strike>
<h1 id="nsi">La NSI c'est super</h1>
CSS
Nous retrouvons donc le CSS qui va de pair avec le HTML, si ce dernier est l’élément central, sans le CSS, le Web ressemblerait à la première page Web. C’est donc ce qui permet de donner un petit peu de style au Web, pour le rendre plus attrayant.
Le JavaScript est aussi un des éléments clés du fonctionnement du Web que nous aborderons en spécialité NSI. Il permet de faire fonctionner certains éléments de façon dynamique, comme un menu, mais aussi certaines interactions avec l’utilisateur comme sur notre portail des élèves et a aussi bien d’autres avantages, que vous pourrez découvrir dans le cadre des projets en spé NSI.
//let nsi;
//nsi = "En classe de première, je choisis la spécialité NSI";
window.alert("En classe de première, je choisis la spécialité NSI");
SQL
Le SQL permet de traiter simplement d’immenses bases de données, de les classifier, les regrouper, etc… Il est extrêmement puissant tout en étant d’une simplicité déconcertante, et permet à nos élèves, de mettre un pied dans le monde des bases de données immenses, ou la moindre recherche manuelle serait un parcours du combattant.
SELECT *
FROM nsi
BASH
Le BASH, c’est magique, peu de personnes vous le diront car elles n’ont pas l’occasion de l’utiliser au quotidien et de découvrir sa praticité. Mais c’est quoi au fait ? C’est tout simplement la langue du terminal, vous savez cette fenêtre noire et peu rassurante qui s’ouvre de temps en temps. Nos élèves découvrent donc cette interface au travers du monde incroyable de Linux/GNU, à travers un petit jeu interactif en ligne : Terminus
mkdir nsi
cd nsi
sudo apt-get install reussite
./reussiteNSI.elf
Les autres fondamentaux en spé NSI
De la même manière qu’un élève étudiant la spécialité Physique au lycée ne sera pas obligatoirement en charge de piloter une centrale nucléaire, les élèves étudiant la spécialité NSI ne seront pas tous développeurs informatique, et ne feront peut-être même pas un métier lié à l’informatique. Cette spécialité est ouverte à tous, filles comme garçons, intéressés de découvrir le fonctionnement des outils qui nous entourent de plus en plus, et désireux d’acquérir des compétences pour le futur.
La spécialité NSI est l’occasion de découvrir une nouvelle science, appelée informatique. Les concepts fondamentaux étudiés en spécialité NSI vont bien au delà de la simple conception de programme, ils permettent de rentrer et de découvrir ce monde fabuleux que sont les sciences informatiques.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.
L’enseignement de spécialité NSI a vocation à multiplier les occasions de mise en activité des élèves, sous des formes variées qui permettent de développer des compétences transversales. Suivre mais aussi écrire et présenter des tutoriels permettent de progresser et de se préparer aux épreuves du baccalauréat.
Les compétences à développer en spécialité NSI :
faire preuve d’autonomie, d’initiative et de créativité ;
présenter un problème ou sa solution,
développer une argumentation dans le cadre d’un débat ;
coopérer au sein d’une équipe dans le cadre d’un projet ;
rechercher de l’information, partager des ressources ;
faire un usage responsable et critique de l’informatique.
Un tutoriel, c’est quoi exactement ?
Un tutoriel c’est comme une recette de cuisine, mais adapté à l’informatique.
Toute personne passionné d’informatique à surement déjà suivi un tuto pour s’initier sur un nouveau logiciel, pour apprendre à coder dans un nouveau langage de programmation ou simplement optimiser la configuration de son outil de travail.
Etre capable de suivre un tutoriel est une compétence indispensable en informatique pour gagner en autonomie.
Etre capable d’écrire un tutoriel est une activité encore plus intéressante car il faut se placer en situation de présenter un problème et sa solution clairement, avec précision en adaptant le niveau des explications au niveau supposé du futur lecteur.
Les tutoriels en spé NSI au lycée Louis Pasteur
Ainsi nous avons décidé au lycée Louis Pasteur de demander à nos élèves d’écrire des tutoriels, dans le cadre naturel de l’enseignement de la spécialité NSI.
Nos élèves réalisent un tutoriel pendant les vacances de Noël en classe de première et de terminale.
A propos des tutoriels publiés par nos élèves
Ce sont nos élèves qui choisissent librement le sujet et rédigent leurs tutoriels.
Les enseignants ne rédigent pas les tutoriels à la place des élèves, ils valident juste le tutoriel en évaluant sa pertinence, son utilité, et de la qualité du rendu final.
Une très grande liberté dans la forme comme dans le fond est laissé aux élèves, il est juste exigé que cela soit intelligible et exploitable par un visiteur du site.
Certains tutoriels de ce site son éventuellement publiés par un enseignant, et alors son nom apparaît clairement au début de l’article.
Enseignant de mathématiques et de spécialité NSI, Lycée Louis Pasteur d’Avignon.
Aime compter jusqu’à 666 mais s’arrête souvent à 42.
Auteur du livre Découvrir la calculatrice NumWorks.