3. Glossaire

Cette page est un glossaire, qui liste des termes et les définitions que j’en donne. Je vais me limiter à maximum 200 définitions, il y en a actuellement 164.

Avertissement

Ces définitions contiennent parfois mon propre point de vue, qui n’est en rien celui de mes employeurs, passés, actuels ou futurs. Elle sont volontairement courtes, et donc, au mieux partielles au pire inexactes. Beaucoup viennent de Wikipédia.

3.1. Vocabulaire d’informatique

Informatique

Science de l’information, de ses traitements et manipulations, de ses représentations. L’informatique est à la fois une science (la branche des mathématiques qui répond notamment à la question « qu’est-ce qu’un calcul ? »), une industrie, un rayon de supermarché, un ensemble d’outils techniques que tout le monde utilise… Autrement dit, l’informatique mélange des aspects théoriques, techniques, commerciaux. Nous nous focaliserons sur le premier, et un peu sur le second, mais pas le troisième.

Ordinateur

Un ordinateur[^ordinateur] est un système (généralement physique) de traitement de l’information, générique et programmable, et qui fonctionne par la lecture (généralement séquentielle) d’un ensemble d’instructions, organisées en programmes, qui lui font exécuter des opérations logiques et arithmétiques.

La structure physique actuelle de l’énorme majorité des ordinateurs est séquentielles, suit l’architecture de Von Neumann, et toutes les opérations reposent sur la logique binaire et sur des nombres formés à partir de chiffres binaires. La technique actuelle des ordinateurs date du milieu du XXe siècle, et il est possible que le paradigme actuellement dominant change significativement à l’avenir, notamment avec l’Informatique quantique.

Les ordinateurs peuvent être classés selon plusieurs critères tels que le domaine d’application, la taille, l’architecture, ou encore leur système d’exploitation. À part les ordinateurs de bureau ou portables, on peut aussi noter les consoles (de jeux vidéo), les téléphones intelligents (smartphones), les calculatrices programmables, les super-calculateurs, les serveurs, etc. Bien que contenant de l’électronique binaire, un grille pain ou une montre numérique ne sont pas à proprement parler des ordinateurs car ils ne sont pas reprogrammables.

[^ordinateur] Synonyme de calculateur (computer en anglais), à l’origine ce mot désignait le Dieu Chrétien, aussi appelé Ordonnateur.

Matériel

Le matériel informatique d’un ordinateur est le complémentaire du logiciel. En anglais, hardware.

« Le matériel est constitué des musiciens et des instruments, tandis que le logiciel est la partition »

Logiciel

Un logiciel est un ensemble de séquences d’instructions interprétables par une machine, et d’un jeu de données nécessaires à ces opérations. Le logiciel détermine donc les tâches qui peuvent être effectuées par la machine, ordonne son fonctionnement et lui procure ainsi son utilité fonctionnelle. Les séquences d’instructions appelées programmes ainsi que les données du logiciel sont ordinairement structurées en fichiers.

Logiciel n’est pas synonyme de programme informatique. Un logiciel est un ensemble typiquement composé de plusieurs programmes, ainsi que tout le nécessaire pour les rendre opérationnels : fichiers de configuration, images, procédures automatiques, etc.

À l’origine, un mot-valise entre « logique » et « matériel » (1969), en anglais, software. Voir mes logiciels préférés si vous êtes curieux-ses.

Programme

« Un programme informatique est un ensemble d’opérations destinées à être exécutées par un ordinateur. » (Définition récursive : produit par programmation.)

  • Un programme source est un code, généralement écrit par un informaticien ou une informaticienne, dans un langage de programmation. Il peut être compilé vers une forme binaire, ou (plus ou moins) directement interprété.

  • Un programme binaire décrit les instructions à exécuter par un microprocesseur sous forme numérique. Ces instructions définissent un langage machine.

Programmation

« La programmation, appelée aussi codage[^codage] dans le domaine informatique, est l’ensemble des activités qui permettent l’écriture des programmes informatiques. C’est une étape importante du développement de logiciels (voire de matériel). L’écriture d’un programme se fait dans un langage de programmation. » (Définition récursive : Qui produit des programmes.)

[^codage] Je recommande d’oublier ce mot codage, qui en informatique théorique désigne quelque chose de plus précis (par exemple, le codage de Church des entiers dans le Lambda-calcul). Voir Cours de Christophe Darmangeat.

Bogue

Traduction1 française d’un bug en anglais : un problème dans un programme informatique. Plus précisément, c’est un défaut de conception d’un programme informatique à l’origine d’un dysfonctionnement. Vous apprendrez à les éviter, ou à les chercher et les éliminer, en déboguant !

Bug

On lui préférera la version française bogue.

Algorithme

« Un algorithme est une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre une classe de problèmes. Le mot algorithme vient du nom d’un mathématicien perse du IXe siècle, Al-Khwârizmî (en arabe : الخوارزمي). » (Définition récursive : Ce qui est étudié par l”algorithmique).

Algorithmique

« L”algorithmique est l’étude et la production de règles et techniques qui sont impliquées dans la définition et la conception d’algorithmes. » [CL10] Liens : Cours de Christophe Darmangeat (Définition récursive : science qui étudie les algorithmes).

Langage
  • Au sens de l’informatique théorique, un langage est un ensemble (possiblement infini mais généralement dénombrable) de mots (finis) sur un alphabet (aussi fini), par exemple les mots de tailles impaires \(L = \{a, aaa, \dots, a^{2n+1}, \dots\}\) sur l’alphabet \(\Sigma=\{a\}\) ;

  • Au sens de l’informatique pratique, désigne un langage informatique, qui peut être un langage de programmation comme Python, OCaml et C, un langage de rédaction de document, comme Markdown, HTML ou LaTeX, ou d’autres langages plus spécialisés ;

  • Au sens linguistique, on dit plutôt une langue. Attention en anglais c’est écrit language, langage en français, par exemple le français, l’anglais ou l’espéranto sont des langues.

Logiciel libre

Un logiciel libre est un logiciel qui permet d’exercer simultanément les quatre libertés logicielles, que sont l’exécution du logiciel pour tout type d’utilisation, l’étude de son code source (et donc l’accès à ce code source, Open source), la distribution de copies, ainsi que la modification et donc l’amélioration du code source. L’inverse des logiciels propriétaires.

Free software: Free as in free speech, not free beer!

Open source

Pas comme logiciel libre, mais les différences sont subtiles. Logiciel libre implique open source, mais pas l’inverse.

Logiciel propriétaire

L’inverse des logiciels libres : un logiciel propriétaire, logiciel non libre ou parfois logiciel privatif voire logiciel privateur, est un logiciel qui ne permet pas légalement ou techniquement, ou par quelque autre moyen que ce soit, d’exercer simultanément les quatre libertés logicielles. Avis personnel : à éviter autant que possible[^exceptionLogicielProprietaire].

Attention, bien que l’expression « acheter un logiciel » soit courante, elle concerne en fait l’achat d’une license d’exploitation, un droit d’utilisation limité au cadre établi par la licence ; le transfert de propriété n’existant qu’en cas de vente du droit d’auteur ou copyright associé. Mais un logiciel propriétaire n’est pas nécessairement payant ; les logiciels gratuits mais non libres sont appelés freeware ou gratuiciel.

[^exceptionLogicielProprietaire] À l’exception acceptable des jeux vidéo ou des logiciels très spécialisés.

3.2. Vocabulaire de la programmation

TODO: à terminer.

Valeur

En informatique, la valeur d’une donnée (par exemple une variable) correspond à son contenu (en binaire), à interpréter selon son type.

Variable

En informatique, les variables sont des symboles qui associent un nom (l’identifiant) à une valeur. Dans la plupart des langages et notamment les plus courants, les variables peuvent changer de valeur au cours du temps (dynamique). Dans les langages de certains paradigmes, notamment la programmation fonctionnelle, leur valeur est au contraire figée dans le temps (statique). Semblable mais différent des variables en mathématiques ou des variables aléatoires en probabilité, ou dans d’autre science.

Type

En programmation informatique, un type de donnée, ou simplement un type, définit la nature des valeurs que peut prendre une donnée, ainsi que les opérateurs qui peuvent lui être appliqués.

Référence

Subtile différence avec les variables, les références sont omniprésentes en programmation. TODO:

Pointeur

Subtile différence avec les variables, les pointeurs seront surtout utilisés en C. TODO:

Passage par valeur

Une stratégie d’appel de fonction, qui donne les valeurs des arguments.

Passage par référence

Une stratégie d’appel de fonction, qui donne des références vers les arguments.

Argument

En informatique, les arguments sont donnés lors des appels de fonctions (et de méthodes). Ils peuvent être des valeurs, des variables, des types ou encore des fonctions (valeurs d’ordre supérieur).

Paramètre

Globalement synonyme d”argument dans le contexte d’appels de fonctions, mais plus général.

Fonction

En informatique, une fonction est un morceau de code réutilisable ailleurs, en lui donnant des paramètres et qui renvoient un résultat. Attention, la notion est un peu différente des mathématiques.

Signature

Pour une fonction, sa signature déclare les listes de ses arguments et des valeurs renvoyées (avec ou sans leurs types, selon le langage). Par exemple, le produit prod(x,y) de deux entiers aura les signatures suivantes :

  • Python :

    # étiquettes de type, conseillée à partir de Python 3.6
    def prod(x : int, y : int) -> int:
        return x * y
    
  • OCaml :

    let prod (x : int) (y : int) : int = x * y;;
    
  • En C :

    int prod(int x, int y) { return x * y; }
    
Classe

En programmation orientée objet, la déclaration d’une classe regroupe des membres, méthodes et propriétés (attributs) communs à un ensemble d’objets. La classe déclare, d’une part, des attributs représentant l’état des objets et, d’autre part, des méthodes représentant leur comportement. Une classe représente donc une catégorie d’objets. Elle apparaît aussi comme un moule ou une usine à partir de laquelle il est possible de créer des objets ; c’est en quelque sorte une « boîte à outils » qui permet de fabriquer un objet. On parle alors d’un objet en tant qu’instance d’une classe (création d’un objet ayant les propriétés de la classe). Vous n’étudierez pas la programmation objet en CPGE.

Objet

En informatique, un objet est un conteneur symbolique et autonome qui contient des informations et des mécanismes1 concernant un sujet, manipulés dans un programme. Le sujet est souvent quelque chose de tangible appartenant au monde réel2,3. C’est le concept central de la programmation orientée objet (POO).

3.2.1. Types de données primitifs

Selon les langages, les types de donnés suivants sont disponibles directement, voir par exemple les en OCaml, et en C.

TODO: use sphinx-panels or sphinx-inline-tabs to nicely present these code samples? But how to compile to \(\LaTeX\)…?

bool

Booléen, deux valeurs possibles, true et false (ou True et False).

  • Python : boolean, écrits avec une majuscule :

    x = True; y = False
    
  • OCaml : bool, écrits en minuscules :

    let x : bool = true and y : bool = false;;
    
  • En C : sans l’entête bool.h, false est l”int 0 et true tous les autres entiers :

    int true = 1; int false = 0;
    
int

Entiers naturels ou relatifs (non signés ou signés), généralement sur 32 ou 64 bits, quasiment toujours inexacts (non associatifs, dépassement de capacité).

  • Python : type int, supporte les entiers en précision arbitraire par défaut, contrairement à la plupart des autres langages :

    i = 1; j = -1993; k = 2**12413
    
  • OCaml : int, généralement sur 64 bits :

    let i : int = 1 and j : int = -1993;;
    
  • En C : plein de types différents, short/int/long/long long, et variantes unsigned :

    unsigned int i = 1; int j = -1993;
    
float

Nombres à virgules flottants, représentant inexacts des nombres réels, décimaux ou rationnels, généralement sur 32 ou 64 bits, quasiment toujours inexacts (non associatifs, non distributif, erreurs d’arrondis, dépassement de capacité, etc), généralement selon la norme IEEE 754 (cf ces vidéos de NSI France ou Suisse, ce tutoriel NSI ou un autre en anglais).

  • Python : type float, à 64 bits, et [la documentation Python donne des bonnes informations(https://docs.python.org/fr/3/tutorial/floatingpoint.html) :

    a = 3.1415; b = 1.0/1993; c = 1e32
    
  • OCaml : float, généralement sur 64 bits :

    let a : float = 3.1415 and b : float = 1.0 /. 1993.0 and c : float = 1e32
    
  • En C : encore quelques types différents, float/double long/long double :

    float a = 3.1415; double b = 1.0/1993; long double c = 1e32;
    
complex

Nombres complexes, souvent vu comme un simple couple de deux nombres flottants.

  • Python : type complex, à 64 bits :

    a = 3.1415; b = 1.0/1993; c = 1e32
    
  • OCaml : Complex :

    open Complex;;
    let z1 : complex = { re = 0.5; im = -0.5 };;
    
  • En C : avec complex.h

    z1 : complex = { re = 0.5; im = -0.5 };;
    
char

Un caractère, ou symbole d’une chaîne de caractère. Généralement un entier sur 8 bits, à 256 valeurs possibles, dans la table ASCII, et noté 'a' avec un des apostrophes (4 sur les claviers classiques).

  • Python : type str pour des string :

    nom = 'R'; prenom = 'G'
    
  • OCaml : char un entier 8 bit, écrit avec apostrophes :

    let nom : char = 'L' and prenom : char = 'X';;
    
  • En C : char est en fait un alias vers int, mais mieux vaut faire attention et l’utiliser quand il faut :

    char nom1 = 'R'; char prenom1 = 'D';
    char nom2 = 'T'; char prenom2 = 'K';
    
string

Chaîne de caractère, souvent vue comme un tableau de char, et immuable ou mutable selon les langage. Généralement notée "salut" avec un des guillemets (3 sur les claviers classiques).

  • Python : type str, qui peuvent utiliser au choix les apostrophes ', les guillemets " ou les triples apostrophes '''...''' ou guillemets """...""" :

    nom = "van Rossum"; prenom = "Guido"
    
  • OCaml : string se comporte vraiment comme un char array, mais avec une syntaxe différente (et étaient mutables avant OCaml 4.02 en 2014) :

    let nom : string = "Leroy" and prenom : string = "Xavier";;
    
  • En C : char est en fait un alias vers int, mais mieux vaut faire attention et l »utiliser quand il faut :

    char nom1 = "Richie";   char prenom1 = "Denie";
    char nom2 = "Thompson"; char prenom2 = "Ken";
    

3.2.2. Structures de données

Type abstrait

Une spécification mathématique d’un ensemble de données et de l’ensemble des opérations qu’on peut effectuer sur elles. On qualifie d’abstrait ce type de données car il correspond à un cahier des charges qu’une structure de données doit ensuite mettre en œuvre.

Exemples en CPGE : Liste, Tableau, Arbre, Graphe, File, Pile, File de priorité, formules propositionnelles, etc. TODO: liens cours

Structure de données

Une manière d’organiser les données pour les traiter plus facilement. Une structure de données est une mise en œuvre concrète d’un type abstrait.

Exemples en CPGE : liste simplement chaîne (type = liste), graphe par listes d’adjacence ou matrice d’adjacence (type = graphe), tas binaire min (type = file de priorité min), etc. TODO: liens cours

Liste

Structure de donnée linéaire, généralement implémentée par simplement chaîné (ou doublement chaînée), permettant d’accéder rapidement au premier élément et à la suite de la liste.

  • Python : list est intermédiaire avec les tableaux !

    lis = [1, 2, 3, 4]
    
  • OCaml : List

    let lis : int list = 1 :: 2 :: 3 :: 4;;
    let lis : int list = [1; 2; 3; 4];;
    
  • En C : avec un typedef et des pointeurs.

Tableau

Structure de donnée linéaire, généralement implémentée par tableau statique ou dynamique, permettant d’accéder rapidement à chaque élément.

  • Python : list est intermédiaire avec les listes !

    tab = [1, 2, 3, 4]
    
  • OCaml : Array

    let tab : int array = [|1; 2; 3; 4|];;
    
  • En C : plusieurs syntaxes, avec ou sans malloc.

    int tab[4] = {1, 2, 3, 4};
    int* tab = malloc(4 * sizeof(int));
    
Tuple

Aussi appelés couples, ou n-uplets en français. Un mélange entre une liste et un tableau, ils sont souvent immuables. Les fonctions ayant plusieurs arguments reçoivent des n-uplets d’arguments. Aussi très utilisé en informatique théorique, par exemple une Machine de Turing est un sextuplet \((Q, \Sigma, \#, q_I, F, \delta)\)., et un Automate est un quintuplet \((Q, \Sigma, q_I, F, \delta)\).

  • Python : tuple

    xy = (1, -3)
    
  • OCaml : par la syntaxe

    let xy : (int, int) = (1, -3)
    
  • En C : avec un typedef et des pointeurs. TODO:

Dictionnaire

Structure de donnée non linéaire aussi appelée tableau associatif, généralement implémentée par table de hachage ou arbre (binaire) de recherche, ou dynamique, permettant d’accéder rapidement à une valeur associée à chaque clé stockée.

  • Python : dict

    dic = {"soleil": "joie", "neige": "ski"}
    
  • OCaml : HashTbl

    open Hashtbl
    let dic : (string, string) Hashtbl.t = Hashtbl.create 10;;
    Hashtbl.add dic "soleil" "joie";;
    Hashtbl.add dic "neige" "ski";;
    
  • En C : avec un typedef et des pointeurs.

Pile

Structure de donnée linéaire, « first in first out » (FIFO), stack en anglais, comme des assiettes sales.

  • Python : list

    dic = {"soleil": "joie", "neige": "ski"}
    
  • OCaml : HashTbl

    open Hashtbl
    let dic : (string, string) Hashtbl.t = Hashtbl.create 10;;
    Hashtbl.add dic "soleil" "joie";;
    Hashtbl.add dic "neige" "ski";;
    
  • En C : avec un typedef et des pointeurs.

File

Structure de donnée linéaire, « first in last out » (FILO), queue en anglais, comme dans une file d’attente au marché.

  • Python : list

    dic = {"soleil": "joie", "neige": "ski"}
    
  • OCaml : HashTbl

    open Hashtbl
    let dic : (string, string) Hashtbl.t = Hashtbl.create 10;;
    Hashtbl.add dic "soleil" "joie";;
    Hashtbl.add dic "neige" "ski";;
    
  • En C : avec un typedef et des pointeurs.

Graphe

Structure de donnée non linéaire, souvent représentées par liste d’adjacence ou matrice d’adjacence (et plus rarement, par liste d’arêtes).

  • Python : avec des tableaux bi-dimensionnels, avec une classe et des pointeurs ;

  • OCaml : pas standard, mais rapide à écrire selon le besoin :

    (* Graphes dont les sommets ont des numéros entiers entre 0 et n-1 *)
    type matrice_adj = int array array;;
    type liste_adj   = (int list) array;;
    
  • En C : avec des tableaux bi-dimensionnels, ou un typedef et des pointeurs, encore et toujours…

Arbre

Structure de donnée non linéaire, un type de graphe (acyclique et connexe).

  • Python : pas standard, avec une classe et des pointeurs ;

  • OCaml : pas standard, mais rapide à écrire selon le besoin :

    (* Arbre binaire avec un 'a aux feuilles *)
    type 'a arbre = Feuille of 'a | Noeud of arbre * arbre
    
  • En C : avec un typedef et des pointeurs, encore et toujours…

3.2.3. Vocabulaire spécifique à l’architecture des ordinateurs

Pour rigoler un peu, il y a aussi des compléments de définitions humoristiques.

Mémoire

Dispositif physique quelconque permettant de stocker de l’information : du papier, votre cerveau, l’ADN, des traces dans la boue, etc.

  • En informatique, on distingue mémoire vive et mémoire morte (RAM et ROM), et mémoire en lecture seule (ex un DVD classique) ou mémoire modifiable (disque dur HDD ou SSD, clé USB, mémoire RAM etc). Au niveau du CPU, les registres sont des mémoires très limitées mais très très rapides.

  • En sciences cognitives, liée à l’étude du cerveau. J’ai lu plein de choses dessus, mais j’ai une mauvaise mémoire 🤣 ! (non non, ironique) ;

RAM

Acronyme de Random Access Memory, qui prête à confusion mais veut dire que l’on peut accéder librement (et pas qu’elle répond aléatoirement !). Ordres de grandeur historiques de la quantité de RAM sur les ordinateurs les plus vendus : 1940-1960 de l’ordre du kilo-octets, 1960-1980 de l’ordre du méga-octets, 1980-2000 lentement vers le giga-octets, 2000-2020 de 1 à 16 giga-octets.

Synonyme : pagaie. C’est triste.

CPU

Acronyme de Computation Processing Unit, ou processeur en français. TODO

Transistor

Le transistor est un composant électronique qui est utilisé dans la plupart des circuits électroniques aussi bien en basse qu’en haute tension. Un transistor est un dispositif semi-conducteur à trois électrodes actives, qui permet de contrôler un courant ou une tension sur l’électrode de sortie grâce à une électrode d’entrée. Inventé par le Bell Labs en 1947, il a révolutionné l’informatique et a permis les progrès fulgurants en miniaturisant toujours plus les ordinateurs. Un ordinateur moderne compte plusieurs dizaines de milliards de transistor, de taille nano-métrique (\(10^{-9}\) m), gravé sur du silicium (comprendre, du sable très pur) dans le CPU.

Mais c’est aussi un superbe jeu vidéo du studio Supergiant Games, qui prend une vingtaine d’heures

Mémoire cache

Une mémoire cache est une mémoire qui enregistre temporairement des copies de données provenant d’une source, afin de diminuer le temps d’un accès ultérieur d’un matériel informatique à ces données.

En CPGE, vous n’étudierez pas ces aspects matériel, mais en algorithmique vous verrez le concept de programmation dynamique, et de mémoïsation, qui utilise une mémoire cache (de plus haut niveau).

Mais c’est aussi une mémoire qui joue à cache-cache. A ne pas confondre avec le cache mémoire, et ses cousins le cache sexe et le Cachou.

ALU

L”unité arithmétique et logique (UAL, en anglais arithmetic-logic unit, ALU), est l’organe de l’ordinateur chargé d’effectuer les calculs. Le plus souvent, l’UAL est incluse dans l’unité centrale de traitement ou le microprocesseur (CPU).

Mais c’est aussi un métal léger et pas cher, que la marmotte utilise pour enrobé les tablettes de chocolats !

FLU

Terme moins standard, c’est le cousin de l”ALU qui gère les calculs sur les nombres à virgules flottantes (floating point).

GPU

Acronyme de Graphical Processing Unit, ou processeur graphique. Utilisés pour vos jeux vidéo, mais aussi pour le calcul numérique intensif hautement parallèle, avec des langages comme nVidia CUDA qui étend le C, ou des outils automatiques comme Google Tensorflow ou Numba pour Python. Pas étudié en CPGE, mais à évoquer en MPI TODO:.

Cœur

Un des CPU mono-cœur dans un CPU multi-cœur. (définition récursive mais qui explique bien)

3.2.4. Matériels informatique

Pour rigoler un peu, il y a aussi des compléments de définitions humoristiques.

TODO: à terminer.

Écran

Dispositif d’affichage, partagé entre la télévision, les ordinateurs et les téléphones, les consoles de jeux, et bien d’autres. Désormais[^écrans] à très hautes résolution à la fois spatiales (résolution HD 1920x1080 typique sur un ordinateur) et colorimétriques (16 millions de couleurs).

[^écrans] Présent dans le grand public depuis les années 60, moi j’ai grandi avec une télé couleur cathodique, des écran en 8-couleurs avec la Game Boy, les écrans non rétroéclairés jusqu’à 2011 etc. Mais non je ne suis pas vieux !

32 bits

Architecture 32 bits, pour ordinateurs mais aussi pour la Game Boy Advance qui a occupé le début de mon adolescence. Successeur des architectures 16 bits (par exemple la SNES, GBC), 8 bits (ex la NES).

64 bits

Architecture 64 bits est le standard moderne, successeur des architectures 32 bits, pour ordinateurs mais aussi pour la Game Boy Advance qui a occupé le début de mon adolescence. Il semblerait que les architectures plus « puissantes » ne soient pas très utilisées (à part la GameCube à 128 bits)

Clavier

Un clavier d’ordinateur est une interface homme-machine munie de touches permettant à l’utilisateur d’entrer dans l’ordinateur une séquence de données, notamment textuelle. Les touches sont généralement des boutons en plastique reliés chacun à un interrupteur électronique.

On peut facilement apprendre à écrire plus vite au clavier, et utiliser des raccourcis clavier intelligent. Christian Clavier[^christianclavier] n’a pas de bons conseils pour ça, mais c’est un acteur formidable !

[^christianclavier] Un acteur légendaire

Souris

Dispositif de pointage graphique, inventé plus tôt que ce qu’on croit ! Appelé souris[^souris] parce que la forme rappelle le mammifère éponyme. Universel sur les ordinateurs, sauf les téléphones intelligents (smartphones).

[^souris] Et pas parce que le pointeur court partout sur l’écran. C’est Jerry dans Tom et Jerry.

Écran tactile

Écran avec lequel on peut utiliser son doigt ou un stylet pour simuler une souris. Universel sur les téléphones intelligents (smartphones), sauf sur les ordinateurs.

Présent dans le grand public depuis ~2005 avec la Nintendo DS puis les smartphones, moi j’ai découvert ça en seconde !

Casque audio

Un casque qui permet[^casqueaudio] d’écouter de la musique depuis son téléphone ou son ordinateur (ou son walkman, ou son gramophone ou la TSF).

[^casqueaudio] Quand on est poli-e, on écoute pas de musique sans casio audio dans l’espace public !

Microphone

Le récepteur qui transforme le son (de votre voix mais pas que) en signal numérique. Permet d’appeler Mamie via Skype, les cousins via Facetime, vos potes en raid via Discord, et surtout de répondre aux questions des profs durant les cours en visio ! Pensez à l’activer et à avoir un microphone de qualité pour éviter les angoisses !

3.2.5. Vocabulaire spécifique à Internet

TODO: à terminer.

Internet

Je ne vais pas vous définir Internet, vous avez grandi avec. Bon allez, quand-même au cas où :

Internet est le réseau informatique mondial accessible au public. Il s’agit d’un réseau de réseaux, à commutation de paquets, sans centre névralgique, composé de millions de réseaux aussi bien publics que privés, universitaires, commerciaux et gouvernementaux, eux-mêmes regroupés en réseaux autonomes ; il en existe plus de 91 000 en 20191. L’information est transmise via Internet grâce à un ensemble standardisé de protocoles de transfert de données, qui permet des applications variées comme le courrier électronique, le World Wide Web, la messagerie instantanée, le partage de fichiers en pair-à-pair, le streaming, le podcasting, la téléconférence.

Ethernet

Terme désignant à la fois le protocole et un type de câble permettant d’accéder à Internet avec un câble et pas en mode sans fil. A préférer si possible, c’est plus rapide, plus écologique, et probablement plus sûr pour la santé.

WiFi

Terme désignant à la fois le protocole et un type de câble permettant d’accéder à Internet avec un câble et pas en mode sans fil. A préférer si possible, c’est plus rapide, plus écologique, et probablement plus sûr pour la santé.

Bluetooth

Autre technologie de communication sans fil, à très courte distance. Utilisé pour le transfert de fichiers entre téléphones, ou pour les applications Anti COVID.

Webcam

Une caméra digitale connectée à un ordinateur, intégrée ou non.

Protocole

Un protocole informatique est un ensemble de règles qui régissent les échanges de données ou le comportement collectif de processus ou d’ordinateurs en réseaux ou d’objets connectés. Un protocole a pour but de réaliser une ou plusieurs tâches concourant à un fonctionnement harmonieux d’une entité générale.

TCP

Transmission Control Protocol (littéralement, « protocole de contrôle de transmissions »), abrégé TCP, est un protocole de transport fiable, en mode connecté. Dans le modèle Internet, aussi appelé modèle TCP/IP, TCP est situé au-dessus de IP.

UDP

Le User Datagram Protocol (littéralement, « protocole de datagramme utilisateur ») est un des principaux protocole de télécommunication utilisés par Internet. Il fait partie de la couche transport du modèle OSI, quatrième couche de ce modèle, comme TCP.

IP

Internet Protocol, le protocole de communication fondamental de la suite des protocoles internet. Il nécessite l’attribution d’adresses IP. .

IPv6

Nouvelle version de l”IP v4, pour répondre au problème d’épuisement d’adresses IPv4.

DNS

Le Domain Name System, généralement abrégé DNS, qu’on peut traduire en « système de noms de domaine », est le service informatique distribué utilisé pour traduire les noms de domaine Internet en adresse IP ou autres enregistrements. En fournissant dès les premières années d’Internet, autour de 1985, un service distribué de résolution de noms, le DNS a été un composant essentiel du développement du réseau.

Adresse IP

Une adresse IP est un numéro d’identification qui est attribué de façon permanente ou provisoire à chaque périphérique relié à un réseau informatique qui utilise l”Internet Protocol. L’adresse IP est à la base du système d’acheminement (le routage) des paquets de données sur Internet.

URL

Une URL (acronyme : Uniform Resource Locator, littéralement « localisateur uniforme de ressource »), couramment appelée adresse web, est une chaîne de caractères uniforme qui permet d’identifier une ressource du World Wide Web par son emplacement et de préciser le protocole internet pour la récupérer (par exemple http ou https). Elle peut localiser divers formats de données : document HTML, image, son….

3.2.6. Verbes spécifiques en informatique

Coder

Synonyme de programmer. J’aime bien, c’est rapide et très oral.

Implémenter

Synonyme de programmer. J’aime bien, ça fait classe.

Implanter

Synonyme de programmer. J’aime pas, on dirait qu’on plante des arbres. Moi je code des scripts, j’implémente des algorithmes, et je programme en général.

Programmer

Synonyme de coder, implémenter, implanter.

Compiler

Exécuter un compilateur, c’est-à-dire transformer le code source d’un programme en code binaire, à l’aide d’un compilateur.

Déboguer

Version française de to debug en anglais : chasser les bogues d’un programme informatique.

Debug

On lui préférera la version française déboguer.

Retourner

Un anglicisme dans la plupart des cas, qui est à éviter : une fonction renvoie une valeur, elle ne la retourne pas… Sauf si la fonction demandée doit vraiment retourner une liste ([x0,..,xN] -> [xN,..,x0]) ou une chaîne ("Canoë" -> "ëonaC). Je serai impitoyable sur cet anglicisme !

Renvoyer

Lorsque une fonction (ou un programme) calcule quelque chose et transmet le résultat à la fonction ou à l’environnement appelant, on doit dire qu’elle a renvoyé ce résultat, par retourner, qui est un anglicisme (to return).


3.3. Liste de langages

3.3.1. Langages utilisés en prépas MP2I

OCaml

Langage de programmation créé par l’INRIA, principalement fonctionnel mais aussi impératif et orienté objet (Objective Caml). Disponible sur toutes les plateformes, gratuitement. Un des langages enseignés en classes préparatoires (avec Python, SQL et C). Cf. https://www.ocaml.org/, Wikibooks:Programmation_OCaml et tutoriels officiels.

Python

Langage de programmation impératif, mais aussi orienté objet. Disponible sur toutes les plateformes, gratuitement. Un des langages enseignés en classes préparatoires (avec SQL, C et OCaml). Cf. https://www.python.org/, et WikiBooks Python ainsi que https://python-prepa.github.io/. Mes suggestions pour apprendre Python sont sur https://perso.crans.org/besson/apprendre-python.fr.html

SQL

Langage de requête de bases de données (Structured Query Language). Disponible en plein de variantes, nous nous focaliserons sur SQLite. Disponible sur toutes les plateformes, gratuitement. Un des langages enseignés en classes préparatoires (avec OCaml, Python et C). Cf. https://sql.sh/ pour un très bon cours en français.

SQLite

Un petit SQL, qui n’a pas besoin d’un serveur gestionnaire de base de données mais qui stocke la base de données sur un fichier local sur un disque. Pratique pour enseigner et pratiquer le SQL sans se prendre la tête avec un serveur, et pour de petites applications dont les performances n’importent peu et dont les bases de données sont petites. Cf. https://www.sqlite.org/.

C

Langage de programmation impératif, très proche de la machine (bas niveau). Un des principaux langages utilisés au monde, quasiment disponible sur toutes les plateformes, gratuitement. Un des langages enseignés en classes préparatoires (avec OCaml, Python et SQL). Cf Wikiversity:Langage C et Wikibooks:Programmation_C

Bash

Langage de script du projet GNU Bash, utilisé depuis les années 1980. Ce n’est pas un des langages enseignés en classes préparatoires mais nous nous en servirons quand même (un tout petit peu). Si vous devenez accro à GNU/Linux je vous suggère de travailler avec Fish Shell, plus moderne et plus agréable à utiliser.

Makefile

Un petit langage de description de tâches, généralement utilisé pour faciliter la compilation de code, très populaire depuis les années 1980. Ce n’est pas un des langages enseignés en classes préparatoires mais nous nous en servirons quand même. Les Makefiles sont notamment utiles pour écrire des programmes non triviaux en C et en OCaml. Ce livre est généré grâce à un Makefile. Cf https://makefiletutorial.com/

Langage interprété

Une implémentation concrète d’un langage (qui est une spécification théorique). Le programme écrit en langage A est lu par un interprète (ou interpréteur), qui l’exécute directement, ou le traduit en langage intermédiaire (bytecode ou non), qui est ensuite exécuté par un autre programme dit machine virtuelle (Virtual Machine).

Langage compilé

Une implémentation concrète d’un langage (qui est une spécification théorique). Le programme écrit en langage A est lu par un compilateur, qui le traduit en langage intermédiaire (bytecode ou code machine natif), qui est ensuite exécuté par un autre programme dit machine virtuelle (Virtual Machine) pour le bytecode ou par le CPU. La frontière entre langages compilés et interprétés est floue, comme le montre OCaml (ocaml, ocamlc et ocamlopt permettent les trois modes différents), et par exemple cat article (en anglais).

Langage transpilé

Une autre variante d’un langage compilé, où le langage de destination n’est pas un bytecode ou du code natif, mais un autre langage. Par exemple, on peut compiler des programmes OCaml en JavaScript avec js_of_ocaml, comme le montre cet exemple MariOCaml.

3.3.2. D’autres langages

JavaScript

Un autre langage très populaire, utilisé principalement pour programmer des petites fonctionnalités dans des pages web, mais aussi de plus en plus pour des applications mobiles ou bureaux (avec Electron) ou des applications en lignes de commande ou côté serveur (avec nodejs). Ces ressources peuvent vous aider à apprendre : WikiBooks JavaScript, https://javascript.info/ très complet mais en anglais.

Java

Un autre langage très populaire, orienté objet et destiné à être compilé en bytecode exécuté sur une JVM (Java Virtual Machine). Très populaire dans les années 1995-2010. Pas enseigné en classes préparatoires, mais dans certaines écoles d’ingénieurs et des Universités. Android et la plupart de ses applications, mais aussi (la première édition de) Minecraft sont programmés en Java. Ces ressources peuvent vous aider à apprendre : WikiBooks Java et les références.

C++

Souvent considéré comme le grand frère du langage C, mais c’est vraiment un langage différent et non une simple extension. Très populaire depuis 1990, et un des langages les plus populaires même encore en 2021. Pas enseigné en classes préparatoires, mais dans certaines écoles d’ingénieurs et des Universités. La plupart des jeux vidéo de grosses productions sont programmés en C++, ou langages similaires comme le C#, que ce soit pour consoles ou ordinateurs (avec notamment les engins Unreal Engine et Unity).

PHP

Un autre langage très populaire dans les années 2000-2015, surtout utilisé pour programmer des serveurs et des applications web dynamiques. Facebook et MediaWiki (qui fait fonctionner Wikipédia) sont notamment programmés en PHP.

Maple

Un logiciel (propriétaire et payant) de calcul formel et un langage de programmation. Avant d’être remplacé par Python par la réforme des prépas scientifiques de 2013, il était enseigné en MPSI/MP, PCSI/PC et PSI. Très puissant pour faire des maths formelles, mais complètement inapproprié pour tout le reste.

MATLAB

Un logiciel (propriétaire et payant) de calcul numérique vectoriel, et un langage de programmation. Avant d’être remplacé par Python par la réforme des prépas scientifiques de 2013, il était parfois utilisé en SI. Très puissant pour faire des maths numériques, mais complètement inapproprié pour tout le reste. Malgré son prix et ses défauts, il reste un standard dans beaucoup de domaines de l’ingénierie numérique et du traitement de signal, vous le croiserez sûrement dans la suite de vos études.

Julia

Un logiciel libre et gratuit de calcul numérique vectoriel, et un langage de programmation moderne et puissant. Encore jeune mais déjà très populaire, je pense qu’il remplacera MATLAB dans quelques années. Si vous ne le croisez pas dans la suite de vos études, posez la question à tous vos profs qui vous forceraient à faire du MATLAB : et pourquoi pas Julia ?

3.3.3. Langages de production de documents

HTML

Pour des pages web, utilisés avec JavaScript et CSS. Cf https://fr.wikipedia.org/wiki/HTML

CSS

Pour la mise en page de pages web, utilisés avec HTML et JavaScript. Cf https://fr.wikipedia.org/wiki/Cascading%20Style%20Sheets

Markdown

Un petit langage à balise, plus léger que HTML et LaTeX, qui permet d’écrire des documents modestes, ou des livres entiers (comme celui ci). Cf https://fr.wikipedia.org/wiki/Markdown

org-mode

Le grand frère historique de Markdown, j’aime moins car moins standard désormais, et un peu trop « Emacs années 90 » pour moi. Il y a d’autres variantes à Markdown, notamment MediaWiki, AsciiDoc ou reStructuredText (rST).

TeX

La base du logiciel LaTeX. Cf https://fr.wikipedia.org/wiki/TeX

LaTeX

Le standard de rédaction de documents scientifiques destinés à être imprimés. En classes préparatoires, vous apprendrez les bases de l’écriture de formules mathématiques avec LaTeX, mais pas le reste, par exemple : \(\forall x\in\mathbb{R}, \cos^2(x)+\sin^2(x)=1\). Il existe plein de ressources pour apprendre, mais je recommande le WikiBooks LaTeX, et notamment la section sur les formules mathématiques.

LibreOffice

Une suite de production de documents, contenant LibreOffice Writer, LibreOffice Impress pour les présentations, LibreOffice Draw pour le dessin, et LibreOffice Calc pour les feuilles de calcul (à la Excel). Cf https://fr.libreoffice.org/

Microsoft Word

Pas un langage mais un outil, qui peut être téléchargé gratuitement sur différentes plateformes, ou utilisés en ligne. Néanmoins, il n’est pas libre. Je recommande plutôt l’alternative libre qui est LibreOffice. https://www.microsoft.com/fr-fr/microsoft-365/word

3.4. Formats de fichiers courants

PDF

Pas un langage ou un outil de production de document, mais le format standard de documents qui sont terminés et destinés à être imprimés ou lus, avec la même apparence sur toutes les plateformes et tous les environnements. Si vous envoyez un devoir sous forme électronique, soit c’est du code, soit c’est un PDF : n’envoyez pas 7 pages numérisées comme 7 pièces jointes au format PNG ou JPEG. Un format produit par Adobe (qui produit notamment aussi Photoshop) non libre mais à la spécification publiée librement. La variante PDF/A est conçue pour un archivage à longue durée. https://fr.wikipedia.org/wiki/PDF

PNG

Format d’images compressées sans pertes, principalement utilisées pour des captures d’écran et pour des logos. https://fr.wikipedia.org/wiki/JPEG

JPEG

Format d’images compressées avec pertes, principalement utilisées pour les photographies. https://fr.wikipedia.org/wiki/JPEG

AVI

Un format de stockage de vidéo avec du son, compressées avec pertes. https://fr.wikipedia.org/wiki/Audio_Video_Interleave

MKV

Un format de stockage de vidéo avec du son, compressées avec pertes. https://fr.wikipedia.org/wiki/MPEG-1/2_Audio_Layer_3

MP3

Le format standard pour la musique compressée avec pertes. Format et logiciels non libres mais gratuits. https://fr.wikipedia.org/wiki/MPEG-1/2_Audio_Layer_3

Ogg Vorbis

Un autre format de musique compressé avec pertes. Format libre, mais moins standard. https://fr.wikipedia.org/wiki/Vorbis

GIF

Un format de stockage de petite vidéo sans son, compressées avec beaucoup de pertes. (prononcé « guiffe », [gif] en API). https://fr.wikipedia.org/wiki/Graphics_Interchange_Format

JSON

Un format texte qui ressemble à un dictionnaire Python, stockage de clés/valeurs. C’est notamment le format utilisé par les notebooks Jupyter. Quasiment le standard pour l’échange de format texte par des programmes sur Internet. Cf https://json.org/.


3.5. Outils informatiques

Cf ma liste d’outils préférés https://perso.crans.org/besson/mes-outils-preferes.fr.html.

3.5.1. Site web

Vous en trouverez plus dans Outils-pedagogiques et Liens-autres-ressources-pedagogiques.

DuckDuckGo

Moteur de recherche libre et non intrusif, qui ne vous espionne pas. Je vous recommande d’oublier Google et Bing : https://duckduckgo.com/ vous fera du bien !

Wikipédia

L’encyclopédie libre en ligne, à laquelle tout le monde peut contribuer : https://fr.wikipedia.org/ !

SCEI

Pour vos concours : https://www.scei-concours.fr/.

GitHub

Leader mondial des hébergeurs de code source en ligne, racheté par Microsoft en 2019 : https://github.com/. Mes ressources pédagogiques sont là : https://github.com/Info-Prepas-MP2I/, utilisant le gestionnaire de version git.

YouTube

Plateforme leader mondiale pour héberger des vidéos, filiale de Google : https://www.youtube.com/. Si besoin, certains cours en distanciel ou des vidéos bonus seront diffusées sur YouTube.

TODO: rajouter quelques sites vraiment importants ?

3.5.2. Outils génériques

Firefox

Le navigateur web suggéré (cf https://www.mozilla.org/firefox/) pour lire ce livre en ligne et utiliser les notebooks Jupyter. Un des principaux navigateur utilisés au monde, et le dernier « grand » navigateur qui soit libre et indépendant, quasiment disponible sur toutes les plateformes, gratuitement. On peut lui ajouter plein d’extensions intéressantes, cf https://perso.crans.org/besson/firefox-extensions.fr.html pour mes suggestions.

Visual Studio Code

L’éditeur de texte générique suggéré (cf https://code.visualstudio.com/) pour travailler en C, OCaml et Python. Un petit nouveau en comparaison des vénérables Emacs et Vi(m), mais bien plus moderne et à la prise en main plus facile. Disponible sur toutes les plateformes d’ordinateurs bureau et portable, gratuitement. On peut lui ajouter plein d’extensions intéressantes, cf https://perso.crans.org/besson/visualstudiocode.fr.html pour mes suggestions.

Jupyter notebook

L’environnement recommandé pour programmer en Python, cf https://www.jupyter.org/. On peut s’en servir pour programmer en OCaml (ocaml-jupyter) et en C (jupyter-c-kernel) mais l’installation de ces kernels n’est pas forcément facile.

Git

Gestionnaire de version que vous prendrez en main en deuxième année. cf https://perso.crans.org/besson/tutogit.fr.html pour mes suggestions. Mes ressources pédagogiques sont là : https://github.com/Info-Prepas-MP2I/

3.5.3. Compilateurs

ocamlc

Compilateur de code OCaml vers du bytecode. A éviter, soit vous interprétez le code avec ocaml directement, soit vous compilez en code natif avec la commande ocamlopt.

ocamlopt

Compilateur de code OCaml vers du code natif. A préférer face à ocamlc.

GCC

Le vénérable GNU C Compiler, pour compiler vos programmes en C. Nous utiliserons plutôt clang, qui est plus moderne et aux messages d’erreurs souvent moins cryptiques.

Clang

Un autre compilateur C, pour compiler vos programmes en C. Nous le préférons à GCC, qui est plus ancien et aux messages d’erreurs souvent plus cryptiques.

GDB

Débogueur du projet GNU, référence pour déboguer des programmes C compilés. A utiliser avec Valgrind pour du débogage plus sérieux et approfondi (pas en CPGE).

ocamldebug

Similaire à GDB, mais pour déboguer des programmes OCaml compilés. S’utilise quasiment pareil.

CPython

Pas à proprement parler un compilateur, mais l’implémentation standard du Python utilise cpython écrit en C, pour interpréter vos programmes Python.

pdb

Similaire à GDB, mais pour déboguer des programmes en Python. S’utilise quasiment pareil. Regardez ipdb depuis IPython ou des notebooks Jupyter, qui est moins austère.

3.6. Systèmes d’exploitations

Android

Le principal système d’exploitation pour téléphone mobile en 2021, produit principalement par Google. On peut lui ajouter plein d’applications intéressantes, cf https://perso.crans.org/besson/apk.fr.html pour mes suggestions.

iOS

Un autre système d’exploitation pour téléphone mobile en 2021, produit par Apple. Apple vous espionne quasiment sur tous les aspects possibles, lorsque vous utilisez un appareil Apple, sachez le ! Je n’y connais rien, je ne pourrais pas vous aider.

Windows phone

Un système d’exploitation pour téléphone mobile, quasiment disparu en 2021, produit par Microsoft. Microsoft vous espionne quasiment sur tous les aspects possibles, lorsque vous utilisez un appareil Microsoft, sachez le ! Je n’y connais rien, je ne pourrais pas vous aider.

Ubuntu

Mon système d’exploitation pour ordinateur, bureau et portable, en 2021, produit par Canonical Ltd. Je vous recommande d’installer Ubuntu sur votre ordinateur, cf ce guide https://doc.ubuntu-fr.org/. C’est un système d’exploitation basé sur GNU/Linux.

Mac OS

Un autre système d’exploitation pour ordinateur, bureau et portable, en 2021, produit par Apple. Apple vous espionne quasiment sur tous les aspects possibles, lorsque vous utilisez un appareil Apple, sachez le ! Je ne connais pas très bien, je ne pourrais pas vous aider aussi bien que sous Ubuntu.

Windows

Un autre système d’exploitation pour ordinateur, bureau et portable, en 2021, produit par Microsoft. Le plus courant dans le grand public. Microsoft vous espionne quasiment sur tous les aspects possibles, lorsque vous utilisez un appareil Microsoft, sachez le ! Je connais pas trop mal, mais je ne pourrais pas vous aider aussi bien que sous Ubuntu.

3.7. Licences

Les pages wiki:Licence_de_logiciel et wiki:Licence_libre donnent plus d’informations, et https://choosealicense.com/ si vous souhaitez choisir une license pour un de vos propres projets.

MIT

La licence de ce livre, cf https://lbesson.mit-license.org/.

Creative Commons

Une autre licence libre très courante, cf https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr.

GPL

Une autre licence libre très courante, celle qui régit les projets GNU, mais qui n’est pas très permissive.

3.8. Formations académique en France

Une liste très partielle, sans jugement aucun et juste avec des pointeurs. Si un concours n’est pas présent, contactez moi.

3.8.1. Formations post-bac

Licence

Trois premières années de formations à l’Université. Avant, les deux premières années donnaient un DEUG.

Master

Quatrième et cinquième années de formations à l’Université. Avant, les quatre premières années donnaient un DEA. Un diplôme d’ingénieur est équivalent à un master. Un master est requis pour passer les concours de recrutements des enseignants (CAPES, agrégations).

Doctorat

Sixième, septième et huitième années de formations à l’Université. Donne le grade de docteur.

CPGE

Classe préparatoire aux grandes écoles. Voir aussi ces définitions : linternaute.fr, cersa.org, ups-cpge.fr.

Prépa intégrée

Classe préparatoire intégrée.

Prépa

Prépa intégrée ou non, voir CPGE ou Prépa intégrée.

3.8.2. Écoles d’ingénieurs

Ecole d’ingénieurs

École d’ingénierie serait un terme plus épicène. Il y en avait 205 en 2019.

ENS

Écoles Normales Supérieures : en France, ENS Ulm à Paris, ENS Paris-Saclay sur le plateau de Saclay (sud Paris) (anciennement ENS Cachan), ENS Lyon à Lyon, ENS Rennes à Rennes. Forment surtout à la recherche (thèse de doctorat) et l’enseignement (agrégation), et ne délivre pas de diplôme d’ingénieurs mais des diplômes universitaires.

École Polytechnique

École d’ingénierie dépendant du ministère des Armées, sur le plateau de Saclay (sud Paris). A ne pas confondre avec les écoles polytechniques universitaires ou à l’étranger (à Montréal, Madrid etc).

Centrale

Un groupe d’écoles d’ingénierie : CentraleSupélec (avant Centrale Paris) avec trois campus à Gif-sur-Yvette, Rennes et Metz, Centrale Lyon, Centrale Marseille, Centrale Nantes, Centrale Lille et une au Maroc (Casablanca).

Mines

Un groupe de d’écoles d’ingénierie, dites école des Mines : Paris (Mines ParisTech), Nancy, Alès, Albi, Lille et Douai, et Saint-Étienne. Parmi les plus vieilles écoles du monde.

Télécom

Groupe d’écoles dépendant des Instituts Mines Télécom (IMT) : IMT Paris, IMT Atlantique Bretagne Pays-de-la-Loire, IMT Lille-Douai.

INSA

Un groupe d’écoles d’ingénierie à prépas intégrées. À Lyon, Rouen, Rennes, Strasbourg, Toulouse et une au Maroc.

Arts et Métiers

Des écoles d’ingénierie, dont l’ENSAM Paris qui a plusieurs campus en France. Parmi les plus vieilles écoles de France (1780).

Polytech

Des écoles d’ingénieurs universitaires, très nombreuses, et aux formations variées.

EPITA

Un groupe d’écoles d’ingénieurs informatique privées, à Paris, Lyon, Rennes, Strasbourg et Toulouse.

Écoles Militaires

Plusieurs écoles d’ingénierie dépendent du ministère des Armées.

3.8.3. Concours en CPGE

SCEI

Organisme qui centrale l’organisation des concours. Voir le calendrier

Concours Centrale-Supélec

Un concours de recrutement commun aux écoles du groupe Centrale.

Concours commun Mines-Ponts

Un concours de recrutement commun aux écoles du groupe des Mines.

Concours Mines-Télécom

Un concours de recrutement commun à plusieurs écoles.

Banque X/ENS

Un concours de recrutement commun à l’X et aux 4 ENS.

Concours commun INP

Un concours de recrutement commun à un grand groupe d’écoles (nouveau nom de CCP).

E3A

Un autre concours de recrutement commun à un grand groupe d’écoles (plus de 60).

Petites Mines

Un ancien concours de recrutement à quatre écoles des Mines qui étaient ouvert aux élèves en première année de prépa.

IEP

Instituts d’Études Politiques aussi ouverts aux élèves de CPGE scientifiques.

Autres concours

TODO: actuaires ? pilotes ? écoles militaires.

Fin de ce glossaire. J’espère qu’il sera assez exhaustif, mais pas trop long. – 2021-02-17 22:06:51


1

Littéralement un bug veut dire un insecte, et bogue désigne la protection piquante sur les châtaignes, à vous de trouver les liens entre les deux métaphores…