Aller au contenu

Conseils pour les NSI

Les NSI sont souvent proche des mathématiques. Elle sont parfois un contre intuitives pour les débutants. Ce document propose quelques conseils pour mieux aborder les NSI.

BONUS : certains conseils sont utiles même en dehors des NSI !

NSI = langages

Beaucoup d'outils et de concepts en NSI font appel à la notion de langage. C'est le cas :

  • Des langage de programmation. Par exemple : Python.
  • Des interfaces en ligne de commandes, comme il peut y a voir sous Linux.
  • Des aspects mathématiques en général, comme la description d'algorithmes.
  • De nombreux formats de fichiers, comme le Markdown utilisé pour ce document, ou le HTML utilisé pour les pages web.

Pourquoi des langages ?

Les langages sont des outils formidables, et sont par de nombreux aspects bien plus efficaces que les interfaces graphiques pour travailler sur un ordinateur.

Mais si on n'utilise pas ou peu de langages en dehors des NSI, il y a une raison : l'utilisation de langages demande un temps d'apprentissage plus long que les interfaces graphiques. Celà vient du fait que pour utiliser correctement un outils basé sur un langage, il faut "parler" ce dernier couramment. Comparons ces deux approches.

Si vous voulez copier-coller un fichier avec un interface graphique, vous commencez par faire un clic droit sur le ficher, dans la fenêtre. Cela vous affiche menu avec différentes options, dont copier (ici, copy).

Capture d'écran d'un clic droit

Vous n'avez plus qu'a cliquer, puis aller dans le dossier où vous voulez coller, puis faire un clic droit et séléctionner coller.

Dans ces deux étapes, les options vous ont été proposées, et donc vous n'avez rien à connaître à part qu'il faut faire un clic droit sur un élément pour interagir avec.

Alors que si vous voulez faire la même chose en ligne de commandes, par exemple sous Linux avec Bash, ça donnera quelque chose comme :

cp chemin/vers/mon/fichier chemin/vers/la/destination

Rien ne vous est proposé, vous devez connaître :

  • le nom de la commande de copie, cp,
  • la manière dont elle s'utilise, c'est à dire : cp fichierSource dossierDestination
  • le nom et le chemin du fichier source
  • le nom et le chemin du dossier destination

Mais alors, qu'est-ce qui est si bien là dedans ? Plusieurs choses.

1) le clavier est plus rapide et aussi plus ergonomique que la souris. En supposant que vous connaissez les élément mentionnés plus haut, et que vous êtes à l'aise avec un clavier, taper la commande va beaucoup plus vite que faire la manipulation à la souris, c'est plus direct.

2) les langages permettent d'exprimer des choses complexes de manière très concise. Par exemple, *copier tous les dossiers et fichiers commençant par bert avec l'extension .jpg du dossier telechargements vers le dossier images_perso se fait en bash avec la commande suivante : cp telechargements/bert*.jpg images_perso/. Rapide, non ?

3) Les langages permettent d'utiliser des fichiers textes, qui sont très légers, et faciles à lire et à analyser automatiquement.

4) Les langages simplifient la communication et l'automatisation. Par exemple, vous voulez envoyer un mail à un ami pour lui expliquer comment faire un copier-coller. Dans le cas d'une interface graphique, il vous lui décrivez les étapes : "clic droit sur le fichier. choisir copier. puis aller dans l'autre dossier. puis clic droit dans le vide. puis choisir coller". Il devra alors lire et reproduire les étapes. Pour expliquer par écrit comment écrire une commande, vous pouvez tout simplement écrire la commande, directement : cp fichier destination. Votre ami pourra même directement copier-coller la commande dans un terminal (le programme qui execute les lignes de commandes) pour aller plus vite !

Apprendre un langage

Les langages informatiques (comme Python) ressemblent aux langues naturelles (comme le Français) dans leur utilisation. L'important, ce n'est pas de les connaître par coeur, mais de les utiliser sans effort, de manière fluide et intuitive.

La fluidité vient par la pratique, et la connaissance approfondie du langage est une conséquence de la pratique.

Il faut un certain temps de pratique d'un langage avant de pouvoir l'utiliser pour faire des réalisations concrêtes. Le début de l'apprentissage d'un nouveau langage est donc souvent frustrant. Avoir conscience de cette phase permet de s'y préparer pour ne pas décrocher. Avoir besoin de faire des allers-retours entre le code et le cours (ou la documentation) est parfaitement normal quand on débute.

Par la suite, il est aussi important de pratiquer régulièrement le langage ou un langage proche si on ne veut pas l'oublier. A noter qu'après une pause courte, l'aptitude revient rapidement avec la pratique.

Ce conseil s'applique avec la plupart des outils et des savoirs en général, mais il est particulièrement important pour les langages, qui ne peuvent pas être maîtrisés sans beaucoup de pratique.

D'une manière générale, donnez vous du temps pour apprendre à utiliser les outils (éditeur de texte, débogueur, ...), c'est presque jamais du temps perdu !

Mieux vaut se tromper que stagner

Les NSI font souvent appel à des concepts et des outils abstraits, qui peuvent sembler très contre-intuitifs pour des débutants. Parfois, on n'a aucune idée de ce qu'on a sous les yeux, ou de ce qui se passe dans notre code. Ca arrive régulièrement au experts aussi. Dans ces cas-là, ne restez pas à réfléchir trop longtemps, mais forcez-vous à bidouiller. Essayer de réécrire votre code autrement. Essayez de dessiner le problème. Tentez différentes approches.

Accepter l'erreur ...

Se tromper, avoir des difficultés, être bloqué quelques temps face à un problème. Il n'y a aucune honte à ne pas savoir faire quelque chose en particulier, vous suivez ce cours avant tout pour apprendre !

L'erreur est un marqueur de progression. C'est parce que vous avez réussi à faire quelque chose que vous avez échoué à faire avant que vous savez que vous avez progressé. Soyez fiers de vos efforts autant dans l'échec que dans la réussite.

... et la critique !

Les NSI comportent une grande part d'ingénierie, où il n'y a souvent pas de solution parfaite pour un problème donné. Vous serez amenés à critiquer vos solutions et celles des autres. Et bien entendu vous devrez accepter qu'ils critiquent en retour vos solutions.

La critique par les pairs est souvent très productive, c'est même un des fondements de la science moderne, à travers la revue par les pairs. Mais mal formulée, une critique peut vite tourner au conflict et faire plus de mal que de bien. Une bonne critique : - est respectueuse et neutre : elle ne comporte aucun jugement de valeur, aucun jugement de la personne, on critique la solution et c'est tout. On s'adapte au destinataire. On ne parle pas de la même manière à son(sa) meilleur(e) ami(e) qu'à un(e) inconnu(e). - est factuelle et détaillée : elle s'appuye autant que possible sur des faits, sur des raisonnements. - propose si possible des pistes d'amélioration. - Consentie : Avant de formuler une critique, demandez aux concernés (les auteurs de la solution) si ils sont prets à recevoir une critique. Il y a des tas de raisons de ne pas vouloir de critique, par exemple si la solution n'est pas complète. - invite à la discussion, en formulant des hypothèses, et non des vérités absolues. "PEUT-ETRE que tu devrais changer ça ?".

Demandez de l'aide !

Si vous restez bloqué trop longtemps, n'hésitez pas à chercher de l'aide, au près du professeur, de camarades, ou de toute personne compétente pour vous aider. Même avec dix ans d'expérience en informatique, on peut parfois rester bloqué sur des problèmes en apparence idiots, comme par exemple un point virgule mal placé dans le code.

Le Framagit du cours de Christophe Mieszczak

Un autre professeur de NSI de Calais, Christophe Mieszczak, a publié ses cours en ligne sur son Framagit https://framagit.org/tofmzk/informatique_git. Je m'appuierai sur ceux-ci pour certains de mes cours. N'hésitez pas à aller y jeter un oeil de temps en temps, surtout en cas de difficulté, ils peuvent vous donner une perspective différente et donc vous aider à comprendre.