Author: Vincent ROBERT

NumApps

Tetris en python, NumWorks

Un incontournable de la Gameboy des années 90. Un jeu de puzzle dans lequel la patience fini par payer ou couter cher.

Captures d’écran du jeux (v 2.0)

Commandes

FlèchesClear / Toolbox / Flèche ↑OK
Déplacer les TetrominosPivoter les tetrominosLancer la partie / Pause / Reprendre

Un peu de technique

Si vous souhaitez en savoir plus sur les aspects techniques de ce jeu, lisez l’article de présentation :
Un Tetris en python pour la NumWorks

Télécharger la version 1

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.

Télécharger la version 2

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.

NumApps

Démineur en python, NumWorks

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 !

Captures d’écran du jeux

Commandes

FlèchesMaisonOKClearShift
Se déplacer sur la grille du jeuRevenir au menuDécouvrir une caseSignaler une bombeActive la triche

Un peu de technique

Si vous souhaitez en savoir plus sur les aspects techniques de ce jeu, lisez l’article de présentation :
Un démineur en python sur la NumWorks

Télécharger

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.

Tutoriels

Découverte de la programmation en Python sur la 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…

Les calculatrices compatibles Python

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.

Tutoriels

Programmer en Python et porter son code sur la…

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.Retour ligne automatique
Aucune idée ? Regardez les utilitaires existants sur TI 83Retour ligne automatique
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)
  • Spyder, complet et donc un peu lourd
  • PyCharm, Community Edition

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)

Roue chromatique

Un petit jeu inspiré de Bombrun sur Casio : planeur_bombe.py

Capture d’écran de Bombrun

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.

Pour que cela change plus vite, tu peux toi aussi contacter la société NumWorks.

Conséquences immédiates : 

  • 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…

Des ressources et des exemples à exploiter

La documentation officielle de la calculatrice

Les tutoriels vidéos de Eric SCHRAFSTETTER

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.

La page d’accueil référençant certains scripts : https://workshop.numworks.com/python

Quelques dossiers à parcourir :

Nom du dossier Lien Auteurs 
numworkshttps://workshop.numworks.com/python/numworksDépôt officiel
schrafhttps://workshop.numworks.com/python/schrafEric Schrafstetter, enseignant & youtubeur
andreanxhttps://workshop.numworks.com/python/andreanxXavier Andréani, , enseignant & tiplanet.org
florian-allardhttps://workshop.numworks.com/python/florian-allardFlorian Allard, enseignant
ph-moutouhttps://workshop.numworks.com/python/ph-moutouPhilippe Moutou, enseignant, site web
telpe51https://workshop.numworks.com/python/telpe51 ?, Outils graphiques
nicolas-patroishttps://workshop.numworks.com/python/telpe51Enseignant, site web

Vous pouvez aussi retrouver quelques scripts publiés conçu pour NumWorks et parfois publié sur nsi.xyz sur les espaces workshop de Vincent ROBERTKévin Fedyna et Arthur Jacquin.

Le site https://tiplanet.org/, qui contient plus grosse bibliothèques de scripts toutes calculatrices confondues, il y a une section dédié à la NumWorks et des idées ou concepts dont on peut s’inspirer dans les dossiers TI 83 PCE ou TI 82+/83+/4

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 !")

Découvrir

nsi42.net : Les projets web crées par nos élèves

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 !

Tutoriels

Rédiger un article sur nsi.xyz (WordPress)

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 :

  • trouvée sur google
  • copiée sur un autre site
  • dont on ne connait pas le copyright exact.

Il est souhaitable de :

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.

Projets

labohelp, nous allons vous aider sur labomep !

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.

Découvrir

Le programme de la spécialité NSI

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é.

Découvrir

La programmation en spé NSI

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.

#nsi {
  color : purple;
}
.physique {
  background-color: black;
}

JavaScript

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.

Découvrir

Les tutoriels en spécialité NSI

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.