- Détails
- Clics : 52864
NSI - Numérique et Sciences Informatiques
Mémoire et langage machine
En son coeur, la machine effectue des calculs à partir d'instructions simples en binaire qui peuvent être directement traduites dans un langage, l'assembleur.
L'assembleur prend, traite et remplit des cases mémoires.
Avant de consultez cette page, il est conseillé de lire celle consacrée à l'architecture de von Neumann.
I. Organisation de la mémoire
I.1. Les différents types de mémoire
Il existe de nombreux mécaniques de mémoires qui se distinguent par leur durabilité (volatile ou permanente), leur mode d'accès (par adresse ou dans l'ordre de rangement).
Mémoire vive RAM (Random Acces Memory)
- La mémoire vive (RAM) est une mémoire volatile (qui perd ses données lorsqu'on coupe son alimentation électrique).
- Il s'agit des registres, des mémoires cache, de la mémoire centrale.
-
Il y a deux types principaux de mémoire vive :
- la mémoire vive dynamique (DRAM) qui, même sous alimentation électrique, doit être réactualisé périodiquement pour éviter la perte d'information ;
- la mémoire vive statique (SRAM) qui n'a pas besoin d'un tel processus lorsque sous alimentation électrique.

Deux barrettes de mémoire de 512 Mio chacune
Mémoire morte ROM (Read-Only Memory )
- La mémoire morte (ROM) est une mémoire non volatile (mémoire rémanente qui conserve ses données même lorsqu'on coupe son alimentation électrique).
- Par exemple les disque SSD (Solid State Drive), les disques magnétiques.
-
Les mémoires mortes sont utilisées, entre autres, pour stocker :
- les informations nécessaires au démarrage d’un ordinateur (BIOS, instructions de démarrage, microcode);
- des tables de constantes ou des tables de facteurs de conversion ;
- Elle fait aussi partie des microprogrammes présents dans les ordinateurs et la plupart des appareils électroniques (smartphone, baladeur et autres lecteurs de CD/DVD) mais aussi la plupart des appareils programmables (TV, réveil, machine à laver, lave vaisselle, etc.).
Le temps d’accès à la mémoire morte est de l’ordre de grandeur de 150 nanosecondes comparativement à un temps d’accès d’environ 10 nanosecondes pour la mémoire vive. Pour accélérer le traitement des informations, les données stockées dans la mémoire morte sont généralement copiées dans une mémoire vive avant d’être traitées.
On appelle cette opération le shadowing.
I.2. Les registres
- Un registre est un emplacement de mémoire interne à un processeur. Les registres se situent au sommet de la hiérarchie mémoire : il s'agit de la mémoire la plus rapide d'un ordinateur, mais dont le coût de fabrication est le plus élevé car la place dans un microprocesseur est limitée.
- L'accès par le processeur à une information située dans la DDR SDRAM de la mémoire centrale est 100 fois plus lente qu'un accès à une information contenue dans un registre.
- Les registres sont utilisés pour stocker des opérandes et des résultats intermédiaires lors des opérations effectuées dans l'UAL (Unité Arithmétique et Logique) du processeur.
- La plupart des PC actuels ont des registres de tailles 64 bits.
Noms de registres
- Dans le premier cas, chaque registre se voit attribuer une référence, une sorte d'identifiant qui permettra de le sélectionner parmi tous les autres. C'est un peu la même chose que pour la mémoire RAM : chaque byte de la mémoire RAM se voit attribuer une adresse bien précise. Et bien pour les registres, c'est un peu la même chose : ils se voient attribuer quelque chose d'équivalent à une adresse, une sorte d'identifiant qui permettra de sélectionner un registre pour y accéder.
- Cet identifiant est ce qu'on appelle un nom de registre.
- Ce nom n'est rien d'autre qu'une suite de bits attribuée à chaque registre, chaque registre se voyant attribuer une suite de bits différente. Celle-ci sera intégrée à toutes les instructions devant manipuler ce registre, afin de sélectionner celui-ci.
Ce numéro, ou nom de registre, permet d'identifier le registre que l'on veut, mais ne sort jamais du processeur : ce nom de registre, ce numéro, ne se retrouve jamais sur le bus d'adresse. Les registres ne sont donc pas identifiés par une adresse mémoire.
I.3. Mémoires centrales et mémoire cache
La mémoire centrale : RAM (Random Acces Memory)
- La mémoire centrale est une mémoire vive qui contient les programmes en cours et les données qu'il utilise. Elle est de taille importante (plusieurs Go).
- Elle est organisée en céllules qui contiennent chacune une donnée ou une instruction repérée par un entier : un adresse mémoire.
- Le temps d'accès à chaque cellule est identique, on parle improprement de mémoire à accès aléatoire ou RAM (Random Acces Memory) mais on devrait plutôt parler de mémoire à accès direct.
La mémoire cache
- Pour pouvoir adapter la très grande vitesse du processeur à celle bien plus faible de la RAM, on place entre les deux une mémoire très rapide, la mémoire cache.
- Il existe souvent plusieurs niveaux de mémoire cache : L1, L2 ...
- Généralement la mémoire cache de niveau L1 et celle de niveau L2 sont regroupées dans la même puce que le processeur (cache interne).
II. Assembleur et jeu d'instructions
II.1. L'assembleur
- Un programme écrit dans un langage de haut niveau (comme Python) éloigné du langage machine (dit de bas niveau) dépend le moins possible du processeur et du système d'exploitation.
- Si on ouvre un fichier exécutable avec un éditeur (hexadécimal), on obtient :
01ebe814063727473747566662e6305f5f43544f525f4c
5f05f5f44544f525f4c4953545f5f05f5f4a43525f4c49
53545f5f05f5f646f5f676c6f62616c5f64746f72735f6
75780636f6d706c657465642e36353331064746f725f69
- C’est une suite d’instructions comme 01ebe814, que l’on peut traduire directement de façon plus lisible :
add $t7, $t3 , $sp
- C’est ce qu’on appelle l’assembleur.
L’assembleur est donc une représentation du langage machine. - Il y a autant d’assembleurs que de type de processeurs différents.
II.2. Instructions et assembleur
Il y a trois types d’instructions
- instructions de transfert entre registres et mémoire
- chargement
- sauvegarde
- instructions de calcul
- additions, multiplications
- opérations logiques
- comparaisons, sauvegarde
- instructions de saut
- sauts inconditionnels
- sauts conditionnels
- sauvegarde
- appels système
II.3. Exemples d'assembleurs
Il existe plusieurs logiciels premattant de programmer en assembleur, citons :
- MARS (téléchargeable ici)
- et un simulateur de registre http://www.peterhigginson.co.uk/AQA/.
De nombreux assembleurs coexistent et les instructions diffèrent donc de l'un à l'autre mais beaucoup de fonctions sont communes.
II.3.1. Sur l'émulateur MARS par exemple
Exemple 1 : avec MARS (téléchargeable ici)
Ecrire ces ligne puis cliquer sur RUN / Assemble
la $t1,3 addi $t2,$t1,5
Cela revient à :
- la $t1,3 : charger (la = LOAD) 3 dans le registre $t1
- addi $t2,$t1,5 : Affecter au registre $t2 l'addition de 5 et de la valeur de $t1
Mars nous donne le conversion de ces instructions :
II.3.2. Sur l'émulateur de CPU : http://www.peterhigginson.co.uk/AQA/.

Dans ce simulateur :
- à droite, on trouve la mémoire vive ("main memory")
- au centre, on trouve le microprocesseur (CPU)
- à gauche on trouve la zone d'édition ("Assembly Language"), c'est dans cette zone que nous allons saisir nos programmes en assembleur.
Le CPU
Dans la partie centrale du simulateur, nous allons trouver en allant du haut vers le bas :
- le bloc "registre" ("Registers") : nous avons 13 registres (R0 à R12) + 1 registre (PC) qui contient l'adresse mémoire de l'instruction en court d'exécution
- le bloc "unité de commande" ("Control Unit") qui contient l'instruction machine en cours d'exécution (au format hexadécimal)
- le bloc "unité arithmétique et logique" ("Arithmetic and Logic Unit")
Exemple 2
- 1. Dans la partie "éditeur" ("Assembly Language") saisissez les lignes de codes suivantes
MOV R0,#42 STR R0,150 HALT
Ses instructions signifient :
- MOV R0,#42 : Place le nombre 42 dans le registre R0
- STR R0,150 : Stocke le contenu de R0 dans la mémoire 150
- HALT : on arrête le processus
- 2. Une fois la saisie terminée, cliquez sur le bouton "submit". Vous devriez voir apparaitre des nombres "étranges" dans les cellules mémoires 000, 001 et 002 :
L'assembleur a converti les 3 lignes de notre programme en instructions machines,
- MOV R0,#42 : la première instruction machine -476053462 est stockée à l'adresse mémoire 000 (elle correspond à "MOV R0,#42" en assembleur),
- STR R0,150 : la deuxième à l'adresse 001 (elle correspond à "STR R0,150" en assembleur)
- HALT : et la troisième à l'adresse 002 (elle correspond à "HALT" en assembleur)
Pour avoir une idée des véritables instructions machines, vous devez repasser à un affichage en binaire (bouton "OPTION"->"binary"). Vous devriez obtenir ceci :
On remarque que l'octet de droite de l'instruction machine "11100011 10100000 00000000 00101010", soit, (00101010)2, est bien égale à (42)10
- 3. Simulation
Pour exécuter notre programme, il suffit maintenant de cliquer sur le bouton "RUN".
Vous allez voir le CPU "travailler" en direct grâce à de petites animations.
Si cela va trop vite (ou trop doucement), vous pouvez régler la vitesse de simulation à l'aide des boutons "<<" et ">>".
Un appui sur le bouton "STOP" met en pause la simulation, si vous rappuyez une deuxième fois sur ce même bouton "STOP", la simulation reprend là où elle s'était arrêtée.
Une fois la simulation terminée, vous pouvez constater que la cellule mémoire d'adresse 150, contient bien le nombre 42 (en base 10). Vous pouvez aussi constater que le registre R0 a bien stocké le nombre 42.
Exemple 3
Effectuer les instructions suivantes et commentez-les :
MOV R0,#10 MOV R1,#20 ADD R2,R1,R0 ADD R2,R2,#5
Remarque : L'instruction pour effectuer une addition est : ADD R2,R0,R1 (place dans R2 le résultat de R0+R1)
II.3. Exercices
Pour faire d'autres exercices
- TP Assembleur
Avec le simulateur : http://www.peterhigginson.co.uk/AQA/.
Compléments
- https://www.commentcamarche.net/contents/763-processeur
L'essentiel sur l'architecture. - Assembleur MIPS.
Un document pdf ressource sur l'assembleur.
{module [104]}
Articles Connexes
- Détails
- Clics : 51331
NSI - Numérique et Sciences Informatiques
Architecture von Neumann
L'architecture de tous les ordinateurs actuels est conforme à un schéma qui a assez peu évolué depuis les premiers ordinateurs électronique à tubes à vide de 1945 (Colossus et ENIAC). Voir la page Histoire de l'informatique.
Ce modèle est dit de von Neumann.
John von Neumann (1903, Budapest - 1957,Washington)
1. L'architecture de von Neumann
1.1 Les principales structures
Dans l'architecture de von Neumann, un ordinateur est constitué de quatre parties distinctes :
- Le CPU : Central Processing Unit (unité centrale de traitement) appelé aussi processeur ;
- La mémoire où sont stockés les données et les programmes ;
- La mémoire se divise entre mémoire volatile (RAM ou mémoire vive) qui gère les programmes et données en cours de fonctionnement
- et mémoire permanente qui gère les programmes et données de base de la machine.
- des bus qui sont des fils conduisant des impulsions électriques et qui relient les différents composants ;
- des entrées-sorties (E/S ou I/O input/Output) pour échanger avec l'extérieur.
1.2 Les sous-structures
- Les échanges entre la mémoire et les registres du CPU (Central Processing Unit) se font via des bus selon une chronologie organisée par l'horloge et suivant la nature des échanges : données ou adresses.
- Un programme est enregistré dans la mémoire.
- L'adresse (un entier) de l'instruction en cours de traitement est stockée dans une mémoire interne au processeur, le cp ou pc : registre compteur de programme
- La valeur de cette instruction (un entier) est stockée dans une autre mémoire interne, le ri : registre d'instruction .
-
L’architecture d’un processeur (CPU) séquentiel, comporte 2 parties :
- 1 - une unité de commande qui analyse les instructions à exécuter et qui séquence les actions élémentaires permettant leur réalisation,
- 2 - une partie opérative qui comprend les outils permettant de réaliser les actions élémentaires (ordonnées par l’unité de commande).
- Elle comprend une unité arithmétique et logique (UAL ou encore ALU) permettant de réaliser des opérations arithmétiques sur des entiers et des opérations logiques sur des vecteurs de bits en interprétant les impulsions électriques.
- Elle comprend également des registres internes (bancs de registres) permettant de stocker de façon très temporaire des opérandes ou résultats intermédiaires de calcul.
2. Le rôle de l'horloge
Les traitements réalisés par l’ordinateur sont faits sur des représentations binaires des données et des traitements à réaliser, et ce en calculant des fonctions logiques.
2.1 Cadence d'un processeur
- Le CPU dispose d'une horloge qui cadence l'accomplissement des instructions et dont l'unité est appelée cycle.
- La fréquence s'exprime en GigaHertz (GHz), elle signifie le nombre d'opérations que fait le processeur en une seconde.
- 3GHz : 3 milliards d'opération à la seconde. En clair, elle influe sur la vitesse de fonctionnement du processeur.
- En 2020, les processeurs tournent entre 1,5 et 3 GHz. Certains atteignent 3.6 GHz mais la course à la fréquence à pris fin depuis 2005 environ car au-delà d'un certain cap, la chaleur dégagée est trop importante et perturbe la lecture des tensions.
2.2 Cycle d'instructions
Le pipeline d'instruction
- Dans un processeur, 5 étapes sont nécessaires pour traiter une instruction. Chacune de ces 5 instructions est exécuté lors d'un cycle.
- LI (ou IF - Instruction Fetch) : charge l'instruction à exécuter dans le pipeline (fetch = aller chercher).
- ID : décoder l'instruction ;
- EX : exécuter l'opération dans l'UAL ;
- MEM : accéder à la mémoire en lecture ou en écriture ;
- ER (ou WB, Write Back) : écrire le résultat dans un registre.
- Pour gagner du temps, le processeur n'exécute pas les instruction de façon séquentielle mais il exécute simultanément plusieurs instructions qui sont à des étapes différentes de leur traitement.
C'est le pipeline d'instruction.
- Grâce au pipeline, le traitement des instructions nécessite au maximum les cinq étapes précédentes. Dans la mesure où l'ordre de ces étapes est invariable (LI, DI, EX, MEM et WB), il est possible de créer dans le processeur un certain nombre de circuits spécialisés pour chacune de ces phases.
Analogie avec une chaine de production
Le pipeline est un concept s'inspirant du fonctionnement d'une ligne de montage. Considérons que l'assemblage d'un véhicule se compose de trois étapes (avec éventuellement des étapes intermédiaires) :
-
1. Installation du moteur. 2. Installation du capot. 3. Pose des pneus.
-
Un véhicule dans cette ligne de montage ne peut se trouver que dans une seule position à la fois.
-
Une fois le moteur installé, le véhicule V1 continue pour une installation du capot, laissant le poste « installation moteur » disponible pour un prochain véhicule V2.
Le véhicule V1 se fait installer ses pneumatiques (roues) tandis que le second V2 est à l'étape d'installation du capot. Dans le même temps un véhicule V3 commence l'étape d'installation du moteur. -
Si l'installation du moteur, du capot et des roues prennent respectivement 20, 5 et 10 minutes, la réalisation de trois véhicules prendra, s'ils occupent un à un toute la chaîne de production, 105 minutes = (20 + 5 + 10) × 3. Si on place un véhicule dans la chaîne de production dès que l'étage auquel le véhicule doit accéder est libre (principe du pipelining), le temps total pour réaliser les trois véhicules est de 75 minutes.
Exemple d'un pileline
- En supposant que chaque étape met 1 cycle d'horloge pour s'exécuter, il faut normalement 5 cycles pour exécuter une instruction, 15 pour 3 instructions :

- En utilisant la technique du pipeline, notre processeur peut alors contenir plusieurs instructions, chacune à une étape différente.
Il faut 9 cycles pour exécuter 5 instructions. À t = 5, tous les étages du pipeline sont sollicités, et les 5 opérations ont lieu en même temps.

Un gain de cycles
- Il faut compter en général 1 à 2 cycles d'horloge (rarement plus) pour chaque phase du pipeline, soit 10 cycles d'horloge maximum par instruction.
- Le premier ordinateur à utiliser cette technique est l'IBM Stretch, conçu en 1961.
Compléments
{module [104]}
Articles Connexes
- Détails
- Clics : 102508
Classes de Terminale
NSI - Numérique et Sciences Informatiques
Le programme de l'enseignement NSI (numérique et sciences informatiques) de terminale s’appuie sur l’universalité de quatre concepts fondamentaux et la variété de leurs interactions : les données, les algorithmes, les langages, les machines, les interfaces.
- Les cours et TD de terminale sont aussi disponibles ici : NSI Terminale
- Nous travaillerons sur la plateforme de l'éducation nationnale :
- Vous pouvez aussi utiliser Basthon pour gérer les nootebook ou GoogleColab.
- 📜 Tous les programmes officiels de Mathématiques
Cours et TD NSI terminale
Histoire de l'informatique
- Une histoire de l'informatique.
- http://www.frisechronos.fr/DojoMain.htm
Outil pour réaliser une frise
- Programmation Orientée Objet : POO
- Présentation : Diaporama de M. Courtois
- Cours et TD 1 NSI sur la POO
- Cours et activités sur la POO via Capytale
Nécessite une inscription - Cours et activités sur la POO en PDF
Cours, TD sur la notion de classe et de POO avec corrigés des exercices.
=> Fichier source LaTex.
- Cours et activités sur la POO via Capytale
- TD 2 sur les Classes
- TD POO - Classes
TD composé de 3 exercices relativement simples sur la POO après avoir vu le cours
- TD POO - Classes
- Projet 1 - NSI POO : les fractions
- Projets 2 - NSI POO : le case briques
- le case briques sur Pygame.
=> A faire sur repl.it ou un autre environnement qui supporte pygame
- le case briques sur Pygame.
- Projet 3 - NSI POO : un jeu de carte (optionnel)
- Version pdf : Un jeu de cartes ;
- Version pdf : Un jeu de cartes ;
- La POO au Bac
- TP 3 : des exercices tirés du Bac à faire sur Capytale
- Epreuves écrites 2023 / 2022
- Par exemple Métropole écrit 2023 : exercice 3 (avec corrigé)
- Par exemple BAC 2021 (POO et Pile) - Exercice 2 / Le corrigé
- Epreuves pratiques 2023 / 2022
- Par exemple Sujet N°32 de 2023 / Correction
- ou Sujet n°32 de 2023 (énoncé et rédaction directe sur Basthon)
- Sujet n°37 de 2023 (énoncé et rédaction directe sur Basthon)
- TP 3 : des exercices tirés du Bac à faire sur Capytale
- Révisions dictionnaires et listes
- Dictionnaires :
- TP de révision Dictionnaires et Listes / Correction
TP avec auto correction - TP de première sur les dictionnaire
- TP de révision Dictionnaires et Listes / Correction
- Dictionnaires :
- Les Bases de données et SQL
- Cours : la partie théorique
- TD sur les BDD
- Le TP sous Capytale.
- Le TP en notebook - (enregistrer le fichier et ouvrez-le sous JupyterLab puis faites-le sur SQLite)
La base de données (format .db ) - (Old version pdf )
- Entrainement :
- Le site de la CNAM pour s'entrainer aux requétes :
- QCM d'Entrainement (Genumsi)
- Des jeux avec des requetes SQL
- Les Bases de données au Bac
- Epreuves écrites 2023 / 2022
- Par exemple Métropole écrit 2023 : exercice 1(BDD et SQL) (avec corrigé)
- Un exercice Type BAC (BDD et SQL) / Le corrigé
- Un autre exercice Type BAC (BDD et SQL) /Le corrigé
- Epreuves pratiques 2023 / 2022
- Pas de (BDD et SQL) lors de l'épreuve pratique (Epreuves pratiques 2023 / 2022)
- Epreuves écrites 2023 / 2022
- La récursivité
- Cours et TD NSI
- Cours et activités sur la récursivité
- Version PDF (plus complet sur la théorie)
- Version Capytale
- Pour visualiser les stackes des appels :
- Cours et activités sur la récursivité
- Exercices et TP
- Un TP sur le flocon de Von Koch / Sur Capytale
- Les tours de Hanoi : Sur Capytale / le Notebook
- Préparation au BAC
- Un exercice Type BAC, voir Exercice 1 / Le corrigé
- Un exercice Type BAC un peu plus difficile, voir Exercice 2 / Le corrigé
- Un QCM d'entrainement (Genumsi)
- Cours et TD NSI
- Structures de Données
- Piles :
- le TD en pdf / Le TD sur capytale
(version notebook)
- le TD en pdf / Le TD sur capytale
- Files :
- Cours et activités html /notebook sur capytale
(version notebook)
- Cours et activités html /notebook sur capytale
- Listes Chainées
- Cours et activité html /notebook sur capytale
( version notebook) - Ressources :
- https://info.blaisepascal.fr/nsi-listes-chainees/
- Le Quick Sort (exercice sur les listes de la fin du td)
- Cours et activité html /notebook sur capytale
- Dictionnaires :
- Cours et activité (la gestion du temps d'accès dans un dictionnaire)
- Création d'une rainbow table sur Capytale
A faire ! - Exercice type BAC :
- Centres Etrangers (J1) - exercice 2
- Centres Etrangers (J1) - exercice 2
- Cours et activité (la gestion du temps d'accès dans un dictionnaire)
- Bilan piles, Files et dictionnaires :
- Arbres :
- Arbres Binaires :
- Cours et TD Arbres Binaires :
- Cours et activités sur les arbres binaires (pdf) / version Capytale / version notebook
=> Correction du TD Arbres Binaires
- Cours et activités sur les arbres binaires (pdf) / version Capytale / version notebook
- Parcours des arbres : prefixe, postfixe et infixe
- Un cours IREM Lyon
- parcours préfixe, on liste le noeud la première fois qu’on le rencontre.
- parcours infixe, on liste le noeud la seconde fois qu’on le rencontre.
- parcours suffixe ou postfixe, on note le noeud la dernière fois qu’on le rencontre.
- Parcours prefixe, postfixe et infixe
- Un cours IREM Lyon
- Cours et TD Arbres Binaires :
- Compléments (projet) : Codage de Huffmann et Compression
- html / notebook / Notebook Sur Capytal
- Ressources :
- Vidéo 1
Une explication très claire du processus de construction de l'arbre - https://cmps-people.ok.ubc.ca/ylucet/DS/Huffman.html
Un site proposant la visualisation de divers algorithmes dont Huffmann
- Vidéo 1
- Point Bac
- Epreuve écrite : annales 2025
- Piles/Files
- Centre Etrangers Groupe 1 Sujet 1 - Exercice 2
- Correction PDF
- Arbres binaires, récursivité, POO :
- Amérique Nord - Sujet 1 - Exercice 1
- Corrigé de Math93.com
- Piles/Files
- Epreuve pratique : annales 2025
- Piles
- Arbre binaire, Parcours Largeur
- Epreuve écrite : annales 2025
- Piles :
- Protocoles de routage :
- Les réseaux : rappels
- Rappel sur le modele TCP/IP
- Le cours de première.
- TP Adresses IP
Adresses IP, masque de sous réseau, adresse réseau et adresse de brodcast
- Protocoles de routages
- Cours et activités
- correction : Exercice bac.
- correction : Exercice bac.
- Cours et activités
- Algorithme de Dijkstra :
- Le noteBook sur Capytale
- Une Vidéo
- Un exemple en vidéo : Méthode par l'exemple .
- Le td associé à l'exemple en vidéo : TD et méthode .
- Compléments :
- Pour le Bac
- TP filius :
- Modelisation et Routage
- Si besoin telecharger le logiciel de simulation reseau : Filius
- Les réseaux : rappels
- Processus :
- Cours
- Le Diaporama du cours
- Le cours complet de Pixee
- Equivalent sous Powershell : https://devops-collective-inc.gitbook.io/a-unix-person-s-guide-to-powershell/commands-detail-p
- L'ordonnancement des processus
- Un cours
- Pour s’entrainer : un Simulateur sur Android ou sur Simulateur sur PC (FCFS et JSF seulement)
- Processus au BAC
- Exercice Sujet Polynésie 2023 Exercice 2 / Correction.
- Sujet 0 - B 2024 - exercice 2 / Corrigé de math93
- TP Processus sous Linux
- LINUX qu'est-ce-que c'est ?
Linux ou GNU/Linux est une famille de systèmes d'exploitation open source de type Unix fondés sur le noyau Linux créé en 1991 par Linus Torvalds.
- TP Processus sur console UNIX
- si besoin aller réviser les commandes UNIX vues en premiere.
- Emulateur LINUX : https://bellard.org/jslinux/
- LINUX qu'est-ce-que c'est ?
- Exercices Bilan
- Exercices / Correction
- Bash et Linux
- Un TP sous Python
- Cours
- Algorithmique et diviser pour régner :
- Rappel sur la dichotomie :
- Rappel sur les tris.
- Diviser pour régner : Exercices sur les tris et Méthode « diviser pour régner » :
- Une définition :
Le paradigme de programmation « diviser pour régner » consiste à décomposer un problème général en petits sous-problèmes plus simples à résoudre, permettant par recomposition d'aboutir à la résolution du problème général.
Cette méthode est appelée ainsi en référence à sa désignation anglaise : divide and conquer. - TP1 Diviser pour Régner : exemples de base (Tri Fusion, par selection et insertion)
- TP2 Diviser pour Régner : les deux points les plus proches
- Points raprochés (Capytale) / Le Notebook
- Help Spoiler : Une aide
- Un autre Projet sur capytale L'algorithme de Karatsuba
- 2 sujets de Bac :
- Une définition :
- Composants intégrés d’un système sur puce :
- Cours :
- Exercice type Bac
- Structures de données (Suites) : Les Graphes
- Une chaine Youtube qui aborde les graphes de façon trés complète.
- Le cours.
- Graphes et dictionnaires
- Représentation d'un graphe sous forme de dictionnaire sous capytale . / Correction
- Représentation avec la bibliothéque networkx sous capytale.
- Recherche en largeur sur un graphe :
- TD de Recherche en largeur (BFS) / Correction
- Recherche en profondeur sur un graphe :
- TP de recherche dans un graphe en profondeur (DFS) / Correction .
- Un Labyrinthe :
- TP Word Ladder Puzzle :
- Recherche dans un graphe : Word Ladder Puzzle / Correction .
- TP Coloration d'un graphe :
- Machine de Turing, Calculabilité et Décidabilité
- Les cours
- Le cours en diaporama
- Une page complete sur : Machine de Turing, Calculabilité et Décidabilité
Avec toutes les définitions
- Exemples :
- Le TD sur Capytale / Le TD en pdf (moins complet)
- Les cours
- Programmation dynamique.
- Le cours avec l'exemple de la suite de Fibonnacci :
- Notebook Cours et activités sur capytale
- Complément sur la compléxité des algorithmes :
- Complexité et Fibonacci (Niveau Universitaire)
- Un TP autour du rendu de monnaie :
- TP Notebook sur capytale
- Une analyse complete, le decoupage d'une barre :
- TP Notebook sur capytale
- Le cours avec l'exemple de la suite de Fibonnacci :
- Sécurisation des communications.
- Le cours : Diaporama
- Consultez la page dédiée de Math93.com
- Bilan du cours
-
- Chiffrement Symétrique : clé unique pour chiffrer et déchiffrer
- La cryptographie symétrique, également dite à clé secrète (par opposition à la cryptographie asymétrique), est la plus ancienne forme de chiffrement. Elle permet à la fois de chiffrer et de déchiffrer des messages à l'aide d'un même mot clé.
- Exemple : le code de César par décalage des lettres
- Chiffement Asymétrique : couple (clé privée , clé publique)
- Le chiffrement asymétrique est une méthode de cryptographie qui utilise deux clés différentes :
- une clé publique, utilisée pour chiffrer les messages,
- une clé privée, gardée secrète et utilisée pour déchiffrer.
Cela permet d'échanger des informations de manière sécurisée sans avoir à partager une clé secrète au préalable.
- Exemple : le systéme RSA, acronyme du noms de ses inventeurs : Rivest, Shamir et Adleman, trois chercheurs du MIT en 1977.
- Le chiffrement asymétrique est une méthode de cryptographie qui utilise deux clés différentes :
- Chiffrement Hybride (comme HTTPS)
- Bien que le système RSA à clé publique soit a priori sûr et pratique puisqu’il n’est pas nécessaire d’échanger la clé de chiffrement comme dans le cas du chiffrement symétrique.
On utilise en pratique plutôt un système hybride, car le système à clé asymétrique est assez lourd à exécuter et prend du temps. - Regardons par exemple le cas d’échange d’informations sécurisées grâce au protocole HTTPS.
- Voici comment fonctionne un échange sécurisé via le protocole HTTPS, qui utilise à la fois :
- Le chiffrement asymétrique (comme RSA) pour établir la connexion de manière sécurisée,
- Puis le chiffrement symétrique (comme AES) pour échanger rapidement les données une fois la connexion établie.
🔐 Détail du processus :
- Le navigateur (client) demande une connexion sécurisée.
- Le serveur (ex : Wikipédia) envoie un certificat contenant :
- Son identité (vérifiée par une autorité de certification),
- Sa clé publique.
- Le navigateur :
- Vérifie le certificat,
- Génère une clé symétrique aléatoire,
- La chiffre avec la clé publique du serveur (grâce à RSA, par exemple),
- Et l’envoie au serveur.
- Le serveur déchiffre la clé symétrique avec sa clé privée.
- Ensuite, tous les échanges sont chiffrés symétriquement (plus rapide et plus efficace pour des gros volumes de données).
🔁 C’est donc une combinaison intelligente :
- Asymétrique pour l’échange initial de la clé,
- Symétrique pour la suite des communications.
- Voici comment fonctionne un échange sécurisé via le protocole HTTPS, qui utilise à la fois :
- Bien que le système RSA à clé publique soit a priori sûr et pratique puisqu’il n’est pas nécessaire d’échanger la clé de chiffrement comme dans le cas du chiffrement symétrique.
- Chiffrement Symétrique : clé unique pour chiffrer et déchiffrer
- Vidéo de Sciences étonnantes :
- Cours complet :
- Les TD :
- TP Chiffrement Symétrique : TP Notebook
- TP Chiffrement Asymétrique, RSA : TP Notebook
- Quelques énigmes à décrypter. C'est un peu un DS type.
- TP sur le masque jetable avec un codage sur 2 chiffres : XOR et masque jetable
- Pour aller plus loin :
- Le puzzle de Merkle
- Pour les plus curieux : Entrainez vous au Hacking éthique sur https://www.root-me.org/
- Préparation au bac :
- Paradigmes de programmation.
- Recherche d'un motif dans un texte : Algorithme de Boyer-Moor-Horspool
- Cours et TD NSI : Cours et activités.
Cours, TD sur la recherche d'un motif dans un texte de différentes façons. On insistera sur le traitement du motif.
Extrait de roman à tester : "La Disparition" de G. Perec. - Des animations avec présentation de la méthode et du traitement du motif :
- Proposition de projet
Concevoir un code permettant de visualiser les différentes étapes de l'algorithme.
Animation sous Python avec Tkinter : https://repl.it/@fduffaud/Boyer-Moore-animation1.
Animation sous de la recherche naive, Boyer-Moore une table et mulkti tables : https://repl.it/@fduffaud/Boyer-Moore-animation2 .
- Cours et TD NSI : Cours et activités.
Activités complémentaires et projets
Vous devez choisir en binôme un projet sur lequel vous travaillerez 2 h par semaine au lycée. Evidemment ce projet doit évoluer aussi chez vous.
La liste de projets est une indication, vous pouvez proposer d'autres choix si vous ne trouvez pas ce qui vous correspond.
- 1ère étape : travail préparatoire avec un journal de bord :
- idées, problèmes, solutions ou échec ...
- 2ème étape : Faire une partie du projet pour en faire une présentation avec un diaporama pour la fin du mois de mars.
- 3ème étape : Finalisez du projet pour en faire une présentation technique vers le moi de mai.
- Projet le lien sur Capytale
- Gestion d'images
- TP 1 : modifications d'une image
- Projet Boyer-Moore
- Sites proposant des projets
- Concours Prologin
Documents ressources
- La recherche dichotomique : Document des IREM
La recherche dichotomique, complexité et terminaison
Evaluations NSI
- Evaluations NSI terminale : toutes les évaluations de NSI terminale avec les corrigés
Compléments NSI
LaTeX : produire des documents scientifiques
- NSI : LaTex
Un outil permettant de produire des documents de qualité. - NSI : Documents Python
Pour produire des documents intégrants du code Python
{module [104]}
Articles Connexes
- Détails
- Clics : 70130
Classes de Première et terminale
NSI - Numérique et Sciences Informatiques
Une brève histoire de l'informatique
Cette rubrique transversale se décline dans chacune des parties du programme de NSI.
I. Introduction
Comme toute connaissance scientifique et technique, les concepts de l’informatique ont une histoire et ont été forgés par des personnes.
Les algorithmes sont présents dès l’Antiquité, les machines à calculer apparaissent progressivement au XVIIe siècle, les sciences de l’information sont fondées au XIXe siècle, mais c’est en 1936 qu’apparaît le concept de machine universelle, capable d’exécuter tous les algorithmes, et que les notions de machine, algorithme, langage et information sont pensées comme un tout cohérent.
Les premiers ordinateurs ont été construits en 1938 et leur puissance a ensuite évolué exponentiellement. Parallèlement, les ordinateurs se sont diversifiés dans leur taille, leur forme et leur emploi : téléphones, tablettes, montres connectées, ordinateurs personnels, serveurs, fermes de calcul, méga-ordinateurs.
Le réseau internet, développé depuis 1969, relie aujourd’hui ordinateurs et objets connectés.
II - Histoire des ordinateurs
1. Machines à programmes externes
1.1 Machines électromécaniques
- L'allemand Konrad Zuse achève le Z1 en 1938, un ordinateur mécanique en binaire, puis le Z3 en 1941 qui lisait son programme sur une bande perforée.
- Le Z3 utilisait le calcul en virgule flottante et réalisait 3 ou 4 additions à la seconde.
- En 1944, L'américain Howard H . Aiken construit l'ordinateur électromécanique Mark I qui pesait 5 tonnes.
1.2 Machines électroniques
- L'apparition des tubes à vides marque le début de l'électronique.
- John Vincent Atanasoff en 1942 construit la première machine électronique sans l'achever complètement.
- Entre 1943 et 1945 les Britaniques Max Newmann et Tomy Flowers utilisent les premiers ordinateurs à tubes à vides nommés Colossus pour déchiffrer le code de Lorenz employé par les Allemands.
- Le premier, Colossus Mark 1, est construit en l’espace de onze mois et opérationnel en décembre 1943, par une équipe dirigée par Thomas “Tommy” Flowers et installé près de Londres, à Bletchley Park : constitué de 1 500, puis 2 400 tubes à vide, il accomplissait 5 000 opérations par seconde.
- Plus rapide, le Colossus Mark II servit notamment pour le lancement surprise du Débarquement.
- Le célèbre ENIAC de John W. Mauchly et J. presper Eckert est achevé en 1945 et permet avec ses 18 000 tubes à vide d'effectuer des calculs balistiques.
- L'ENIAC (acronyme de l'expression anglaise Electronic Numerical Integrator And Computer) est construit pour être Turing-complet. Il peut être reprogrammé pour résoudre, en principe, tous les problèmes calculatoires.
ENIAC (Electronic Numerical Integrator And Computer) à Philadelphia, Pennsylvania.
Glen Beck (au fond) et Betty Snyder (premier plan) programment l'ENIAC au building 328 dans le "Ballistic Research Laboratory (BRL).
2. Machines à programmes enregistrés
- En 1948 apparaissent les premières machines à programmes enregistrés, ancêtres directs des ordinateurs actuels. Les données et programmes résident en mémoire.
- Ces machines sont basés sur les travaux de Mauchly, Eckert et von Neumann.
- Au début des années 1950 apparaisent les premiers ordinateurs commerciaux avec IBM, DEC et Bull (en France depuis 1931).
3. Du mini-ordibateur à la micro-informatique
3.1. Miniaturisation
- Le transistor apparaît en 1947 à la place des tubes à vide et on commence à le fabriquer à faible coût au milieu des années 1950.
- Le circuit intégré apparaît en 1958.
- En 1971 le premier microprocesseur voit le jour, c'est l'Intel 4001. L'informatique s'ouvre alors aux particuliers.
- De multiples machines sont commercialisées : l'Altair 8008, l'Apple II (1977), l'IBM PC (1981), le ZX 81 (1981), le commodore 64 (1982), le Macintosh (1984) ...
- Le ZX 81 est considéré à son époque comme le premier ordinateur familial en kit en France, sa résolution et sa capacité mémoire (1 ko) ne permettait pas énormément de prouesses au niveau des jeux.
II. Histoire du langage informatique et des systèmes d'exploitation
II.1. Langages
- Après le premier compilateur conçu en 1951 par Grace Hopper, le langage Fortran (FORmula TRANslator) est spécifié en 1954 et achevé en 1956 par John Backus. C'est le premier langage dit de haut niveau. Il est utilisé pour le calcul scientifique, encore de nos fours.
- Suivent ensuite : le Lisp, le Cobol et le Basic en 1964.
- Puis de 1970 à 1980 : le C (1972), le ML (1973) dont est issu Caml, Ada (1983) et C++ (1986).
- La première version de Python date de 1991 (Guido van Rossum) et JavaScript a été publié en 1995.
- On peut observer sur ces sites les différents langages utilisés par les programmeurs. Les trois premiers sont en 2019 : JavaScript, Python et Java.
II.2. Et les systèmes d'exploitation
- Au milieu des années 1960, chaque constructeur développe son propre système d'exploitation : OS/360, puis MSV chez IBM, système Unix (1970) chez AT&T (Bell ...)
- MS-DOS écrit par Microsoft pour IBM s'impose. Il est suivi par Windows en 1985.
- En 1984 Richard Stallman (ancien au MIT) débute la création du système GNU et promeut le mouvement du logiciel libre.
- Le 27 septembre 1983, Richard Stallman dévoile son projet de développer un système d’exploitation compatible UNIX appelé GNU — acronyme récursif (la forme développée du sigle contient sa forme réduite) qui signifie en anglais « GNU’s Not UNIX » (littéralement, « GNU n’est pas UNIX ») , en invitant la communauté hacker à le rejoindre et participer à son développement.
II.3. Compléments
Voici quelques dates importantes dont vous trouverez des développement sur la page : http://www.histoire-cigref.org/blog/langage-informatique-savoir-coder-une-longue-histoire/
3. Une frise
Je vous propose de compléter une frise chronologique, tout au long de l'année en utilisant par exemple l'outil suivant :
{module [104]}
Articles Connexes
- Détails
- Clics : 200279
Classes de Première — NSI
Classes de Première
NSI - Numérique et Sciences Informatiques
- Le programme de l'enseignement NSI (numérique et sciences informatiques) de première générale s’appuie sur l’universalité de quatre concepts fondamentaux et la variété de leurs interactions : les données, les algorithmes, les langages, les machines, les interfaces.
- Evaluations NSI première : toutes les évaluations de NSI première avec les corrigés.
- Tous les sujets de la BDD : Sujets des ECC de NSI.
- Tous les TD sont aussi disponibles ici : https://prolifaxe.github.io/coursdecourtois/NSI_1ere.html
Cours et TD NSI première
- Histoire de l'informatique
- Une histoire de l'informatique.
- http://www.frisechronos.fr/DojoMain.htm
Outil pour réaliser une frise
- Python ... les premiers pas
- Le TD de découverte :
- Débuter Python (TD 1 à 4)
Des exercices avec quelques rappels de cours afin de maitriser l'essentiel de Python.
- Pour s'entrainer sur les fonctions vues en cours.
Seriez vous capable de les refaire sans la correction ? :
Revision des basiques sur Capytale , avec correction automatique.
- Débuter Python (TD 1 à 4)
- Le TD de découverte :
- Python : Les Listes
- TD 5 — Découverte de Python - partie 2
Découverte des Listes (1re maths et NSI) - TD 6 — Recherche des occurrences sur des valeurs de type quelconque / Correction.
Introduction des listes, parcours séquentiel sur une liste, fonction .append
- Compléments sur les listes
- TD 7A : Les listes, version Capytale (version PDF) / Correction partie 1
- TD 7B : TD Listes : Exercices d'entrainement sur les listes (avec correction automatique)
- Premier Bilan
- ⊕ Avant de passer à la suite il faut bien maitriser les bases, si ce n'est pas le cas il faut S'entrainer sur les bases de hackingScience.
- TD 5 — Découverte de Python - partie 2
- Les dictionnaires
- Cours et TD sur les dictionnaires
- Les dictionnaires, version Notebook
- Les dictionnaires, version Notebook
- TP Dictionnaires et listes
- QCM : Dictionnaires et listes de niveau 2.
49 questions
- Cours et TD sur les dictionnaires
- Liste de projets 1 : PROJETS
- Liste de projets 2023 Niveau 1
D'après le concours prologin, une liste de nombreux projets.- Réaliser les 8 projets du TD :
- Liste de projets Niveau 2
D'après le concours prologin, une liste de nombreux projets.- Réaliser les 8 projets du TD :
- Liste de projets quelconques :
- Vérification du numero de carte bleue d'aprés l'algorithme de Lhun.
- ASCII Art Challenge
Consigne : pour chaque défi, écrire une fonction qui permet d'afficher la forme demandée sous forme de caractères ASCII, puis un exemple d'appel de cette fonction.
- Liste de projets 2023 Niveau 1
- Représentation des données : types et valeurs de base
-
- Introduction : Comment comptent les Shadoks ?
- Cours NSI : Cours NSI types et valeurs de base / Cours avec corrigé des exercices.
Représentation des entiers, décimaux, approximation des réels et représentation du texte.
- TD 1 NSI : représentation binaire d'un entier relatif / Correction du td.
=> Une astuce en vidéo (une petite confusion droite <-> gauche mais c'est assez clair)
- TD 2 NSI : représentation des nombres
Exercices divers dont certains tirés du sujet 0
=> TD 2 sur Capytale : Exercices 1 et 2 sur Capytale
- TD 3 NSI : TD python sur le changement de base quelconque sur Capytale (Trés guidé)
- TD 3 bis NSI : TD python changement de base 2, 10 ou 16 (Peu guidé)
- Correction : https://capytale2.ac-paris.fr/web/c/fa30-8071435
- Correction : https://capytale2.ac-paris.fr/web/c/fa30-8071435
- Entrainement :
- QCM pour vous tester (71 questions) / Correction
- Entrainement Sur les flottants
- QCM pour vous tester / Correction (14 questions)
-
- Circuits et logique booléeenne
- Cours : Cours circuits et logique booléenne
Logique booléenne, propriétés, Transistors, portes logiques et fonctions booléennes
- TD NSI 1 : Variables booléennes.
Variables booléennes et fonctions booléennes
- TD 2 NSI : Circuits logiques et logisim / Correction.
=> A faire sur Capytale - Le meilleur logiciel pour faire les exercices c'est Logisim
Il ne s'utilise qu'en local. Vous devez utiliser Logisim si vous voulez faire l'exercice 3.5 rapidement. - Projets sur circuits logiques : Enoncés des projets
- => QCM pour vous tester. (32 questions)
- => Exercices sur l'algèbre de Boole avec des propriétés supplémentaires ou avec correction
- Pour vous entrainer sur un devoir type. :
- Traitement de données en tables
- TD 1 NSI : Gestion de Fichiers / Correction : https://repl.it/.
Gestion de fichiers, repertoires sous Python - Suite du TD1 sur Capytale : Chapitre IV et V.
- Extrait de roman à tester : "La Disparition" de G. Perec.
- Fichier à importer : Demi.txt.
- Entrainement NSI : Un devoir type sur la gestion de fichier / Correction
-
- TD 2 Compléments :
- Manipulation des fichiers csv (PDF) / correction : Sur Capytale
- Version Capytale (Partie II et III)
Gestion des fichiers csv via un tableur ou via Python. Création de tables.
- TD 2 Compléments :
- TD 3 NSI :
- Opérations sur les Tables / Sur Capytale:
- Exercices 1, 2, 3, 4 et 5 / correction dans Capytale (sans le projet)
Recherche dans une table. Rechercher les lignes d’une table vérifiant des critères exprimés en logique propositionnelle. Tri d'une table. Trier une table suivant une colonne.
Jointures ou fusions de tables. Construire une nouvelle table en combinant les données de deux tables.
- DS type opération sur les tables et fichiers CSV
- OU
Projet sur les prénoms- Dépot du projet sur Capytale
- Table des prénoms 2003 : Prenoms2003.csv.
- Table des prénoms 2004 : Prenoms2004.csv.
- Compléments - tous les prénoms 1900-2018 : nom_naissance2018.csv.
- Source : https://www.data.gouv.fr/fr/datasets/ficher-des-prenoms-de-1900-a-2019/
- Site US avec les prénoms par état : https://www.ssa.gov/cgi-bin/namesbystate.cgi
- TD 1 NSI : Gestion de Fichiers / Correction : https://repl.it/.
- Architecture Matérielles et systèmes d'exploitation
- Histoire des ordinateurs
- Architecture von neumann
- Mémoire et langage machine
- Cours en ligne / Cours version pdf.
- Assembleur : émulateur MARS.
- Assembleur : émulateur et visualiseur CPU.
- TP Assembleur : TP et émulateur CPU.
- Linux et Bash
- Un QCM pour vous tester.
- Algorithmes de tri
-
- TD NSI : Algorithmes de tri
Notion de tri, tri par insertion, tri par sélection.
- TD NSI : Algorithmes de tri
- TP NSI : Programmation sur Capytale / Correction.
- Entrainement Devoir Type sur les Tris : Programmation sur Capytale / Correction.
-
-
Algorithmique - Projet 2 : PROJET 2 / Version Capytale du projet
- C'est une adaptation et un prolongement du projet GPS de niveau 2.
- On va manipuler des listes, générer des listes de tuples d'entiers aléatoires, calculer des distances dans un repère orthonomé et utiliser matplotlib pour les graphiques. On va aussi utiliser les algorithmes de tri en les adaptant.
- Consultez la page matplotlib pour obtenir de l'aide.
- HTML (HyperText Markup Language) et CSS (Cascading Style Sheets )
- Le HyperText Markup ou HTML est le langage de balisage conçu pour représenter les pages web.
Il est souvent utilisé conjointement avec le langage de programmation JavaScript et des feuilles de style en cascade (CSS). - Cours et exercices sur la page dédiée : HTML et CSS.
- Le HyperText Markup ou HTML est le langage de balisage conçu pour représenter les pages web.
- HTML (HyperText Markup Language) et Javascript
- Le JavaScript est un langage de programmation de scripts principalement employé dans les pages web interactives.
- Cours et exercices sur la page dédiée : Javascript et HTML.
- PHP et Interaction Client-serveur
- Le PHP — PHP: Hypertext Preprocessor — est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP.
- Cours et exercices sur les pages dédiées :
- PHP et interaction client-serveur : présentation et installation du serveur.
A consulter impérativement avant de vous lancer dans le TD. - PHP et interaction client-serveur : exercices et apllications.
- PHP et interaction client-serveur : présentation et installation du serveur.
- La recherche dichotomique
- Vidéo : La recherche dichotomique
- Le TP sur Capytale : Recherche Dichotomique
- Cours et TD NSI : La recherche dichotomique.
- Une premiére approche de l'Intelligence Artificielle (AI) : Les k plus proches voisins
- Cours et TD NSI : les k plus proches voisins.
- Le TP sur Capytale : les k plus proches voisins
- Un TP sur la reconnaisssance de caractères : classification de chiffres 2 et 7
- ressources sur la reconnaisssance de caractère classification de chiffres 2 et 7
- Les algorithmes gloutons
- Cours et TD NSI : les algorithmes gloutons.
- Le TD CAPYTALE sur : Le rendu de monnaie.
- Le probleme du sac à dos : TP en pdf à faire sur Capytale
- Reseaux
- Cours et TD NSI : les réseaux.
- PROJETS
- Projets Logissim
De nombreux petits projets de niveau identifié - Projet France/USA
- Le jeu de la taupe sur processing.
Format notebook .ipynb - Quelques tutos processing :
- Le jeu de la taupe sur processing.
- Projets Logissim
Evaluations NSI
- Evaluations NSI première : toutes les évaluations de NSI première avec les corrigés.
- Les sujets d'épreuves du BAC de NSI (première)
- Tous les sujets de la BDD : Sujets des ECC de NSI.
- générateur de QCM : https://genumsi.inria.fr/
Compléments NSI
LaTeX : produire des documents scientifiques
- NSI : LaTex
Un outil permettant de produire des documents de qualité. - NSI : Documents Python
Pour produire des documents intégrants du code Python - Programmer en jouant
- Révisons avec un pirate : PYRATES
- CheckIO propose de petits challenges à programmer. On peut demander la traduction en Français des problèmes.
https://py.checkio.org/
{module [104]}






